<template>
  <div class="mettingDetail">
    <!-- 反馈新建编辑框 -->
    <CommonDialog
      :title="createDialogTitle"
      width="90%"
      v-bind:dialogVisible="createDialogVisible"
      v-if="createDialogVisible"
      @on-change-dialogVisible="createDialogVisibleChange"
      class="feedback"
      top="10vh"
    >
      <template #body>
        <el-form
          class="createForm"
          ref="createForm"
          label-position="left"
          label-width="135px"
          :model="createForm"
          :rules="createFormFormRules"
          size="mini"
        >
          <el-row :gutter="10" v-if="createType === 'add'">
            <el-col :span="12" v-if="createType === 'add'">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <!-- <el-input v-model="createForm.feedBackNumber" @change="feedIdChange" clearable></el-input> -->
                <el-input
                  v-model.number="createForm.feedBackNumber"
                  @input="feedIdChange"
                  ><template slot="append"
                    ><el-button
                      style="background: #409EFF;color:#fff;border-top-left-radius: 0;border-bottom-left-radius: 0;"
                      type="primary"
                      @click="searchFeed"
                      icon="el-icon-search"
                      >查询</el-button
                    ></template
                  >
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-else>
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input
                  v-model="createForm.feedBackNumber"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>

            <el-col :span="12" v-if="createType === 'edit'">
              <el-form-item label="创建人" prop="createUserName">
                <el-input
                  v-model="createForm.createUserName"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-else>
              <el-form-item label="创建人" prop="createUser">
                <el-input v-model="createForm.createUser" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType === 'add'">
            <el-col :span="12" :offset="12">
              <el-form-item label="创建天数" prop="createDay">
                <el-input v-model="createForm.createDay" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType === 'add'">
            <el-col :span="24">
              <el-form-item label="所属产品" prop="productName">
                <el-input v-model="createForm.productName" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType === 'add'">
            <el-col :span="24">
              <el-form-item label="标题" prop="title">
                <el-input v-model="createForm.title" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row
            :gutter="10"
            v-if="pannelName === 'V1' || createDialogTitle === '新增上会反馈'"
          >
            <el-col :span="24">
              <el-form-item label="上会原因" prop="discussionContent">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="createForm.discussionContent"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row
            :gutter="10"
            v-if="pannelName === 'V2' && createDialogTitle === '反馈编辑'"
          >
            <el-col :span="24">
              <el-form-item label="本次会议讨论内容" prop="discussionContent">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="createForm.discussionContent"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="是否继续上会" prop="continueMeetingTag">
                <el-radio-group v-model="createForm.continueMeetingTag">
                  <el-radio
                    :disabled="
                      createDialogTitle === '新增上会反馈' &&
                        pannelName === 'V1'
                    "
                    :label="true"
                    >继续上会</el-radio
                  >
                  <el-radio
                    :disabled="
                      createDialogTitle === '新增上会反馈' &&
                        pannelName === 'V1'
                    "
                    :label="false"
                    >转线下跟进</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="主负责人" prop="masterId">
                <el-select
                  v-model="createForm.masterId"
                  @change="masterTaskChange($event, 'createForm')"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="items in productUserList"
                    :key="items.id"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="其他负责人" prop="otherPrincipalUserId">
                <el-select
                  v-model="createForm.otherPrincipalUserId"
                  filterable
                  clearable
                  multiple
                  style="width: 100%"
                  @change="selectIdChange($event, 'createForm')"
                >
                  <el-option
                    v-for="(items, inds) in allUserList"
                    :key="inds"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="申请人" prop="applicantId">
                <el-select
                  v-model="createForm.applicantId"
                  @change="changeCreateChange"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="items in productUserList"
                    :key="items.id"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName === 'V2'">
            <el-col :span="12">
              <el-form-item label="会议议程">
                <el-col :span="11">
                  <el-form-item prop="startTime">
                    <el-time-select
                      placeholder="起始时间"
                      v-if="createDialogVisible"
                      style="width:100%;"
                      value-format="HH:mm"
                      v-model="createForm.agendaStart"
                      :picker-options="{
                        start: '08:00',
                        step: '00:05',
                        end: '23:59',
                        maxTime: createForm.agendaEnd,
                      }"
                    >
                    </el-time-select>
                  </el-form-item>
                </el-col>
                <el-col class="line" :span="2"
                  ><div style="text-align:center;">-</div></el-col
                >
                <el-col :span="11">
                  <el-form-item prop="endTime">
                    <el-time-select
                      placeholder="结束时间"
                      v-if="createDialogVisible"
                      style="width:100%;"
                      value-format="HH:mm"
                      v-model="createForm.agendaEnd"
                      :picker-options="{
                        start: '08:00',
                        step: '00:05',
                        end: '23:59',
                        minTime: createForm.agendaStart,
                      }"
                    >
                    </el-time-select>
                  </el-form-item>
                </el-col>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="" prop="agenda">
                <el-input type="hidden" v-model="createForm.agenda"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="备注" prop="remark">
                <el-input
                  type="textarea"
                  :rows="4"
                  v-model="createForm.remark"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createDialogTitle === '反馈编辑'">
            <el-col :span="24">
              <el-form-item
                :label="pannelName === 'V2' ? 'V2修订记录' : 'V1修订记录'"
                prop="meetingFeedBackTaskLogs"
              >
                <ul class="recordsUl recordsUl2">
                  <li
                    v-for="(item, index) in createForm.meetingFeedBackTaskLogs"
                    :key="index"
                  >
                    <div class="log_detail">
                      <div
                        class="log_detail_footer"
                        v-html="item.content"
                      ></div>
                    </div>
                  </li>
                </ul>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="createDialogVisibleChange"
          >取 消</el-button
        >

        <el-button
          type="primary"
          :disabled="!couldClick"
          size="small"
          @click="saveCreateForm('createForm')"
          class="submitReme"
          >保存</el-button
        >
      </template>
    </CommonDialog>
    <!-- 上会任务 -->
    <CommonDialog
      :title="taskMissionTitle"
      width="90%"
      v-bind:dialogVisible="taskMissionVisible"
      v-if="taskMissionVisible"
      @on-change-dialogVisible="taskMissionVisibleChange"
      class="feedback"
      top="10vh"
    >
      <template #body>
        <el-form
          class="createForm"
          ref="taskMissionForm"
          label-position="left"
          :model="taskMissionForm"
          :rules="taskMissionFormRules"
          size="mini"
          label-width="135px"
        >
          <el-row :gutter="10" v-if="taskMissionType === 'add'">
            <el-col :span="12">
              <el-form-item
                label="任务ID"
                :prop="
                  taskMissionType === 'edit' ? 'edit_taskNumber' : 'taskNumber'
                "
              >
                <!-- <el-input
                  v-model.number="taskMissionForm.taskNumber"
                  clearable
                  @change="taskNumberChange"
                ></el-input> -->
                <el-input
                  v-model.number="taskMissionForm.taskNumber"
                  @input="taskNumberChange"
                  ><template slot="append"
                    ><el-button
                      style="background: #409EFF;color:#fff;border-top-left-radius: 0;border-bottom-left-radius: 0;"
                      type="primary"
                      @click="searchTaskId"
                      icon="el-icon-search"
                      >查询</el-button
                    ></template
                  >
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="创建人" prop="taskCreater">
                <el-input
                  v-model="taskMissionForm.taskCreater"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType === 'add'">
            <el-col :span="12">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input
                  v-model="taskMissionForm.feedBackNumber"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>

            <el-col :span="12">
              <el-form-item label="创建人" prop="createUser">
                <el-input
                  v-model="taskMissionForm.createUser"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10" v-if="taskMissionType === 'add'">
            <el-col :span="12" :offset="12">
              <el-form-item label="创建天数" prop="createDay">
                <el-input
                  v-model="taskMissionForm.createDay"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType === 'add'">
            <el-col :span="24">
              <el-form-item label="所属产品" prop="productName">
                <el-input
                  v-model="taskMissionForm.productName"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType === 'add'">
            <el-col :span="24">
              <el-form-item label="标题" prop="title">
                <el-input v-model="taskMissionForm.title" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="!noTaskReason || !noFeedBackReason">
            <el-col :span="24">
              <el-form-item
                :label="pannelName === 'V1' ? '上会原因' : '本次会议讨论内容'"
                prop="discussionContent"
              >
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="taskMissionForm.discussionContent"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- <el-row :gutter="10" v-if="pannelName === 'V2'">
            <el-col :span="24">
              <el-form-item label="本次会议讨论内容" prop="discussionContent">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="taskMissionForm.discussionContent"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row> -->

          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="是否继续上会" prop="continueMeetingTag">
                <el-radio-group v-model="taskMissionForm.continueMeetingTag">
                  <el-radio
                    :disabled="
                      taskMissionTitle === '新增上会任务' && pannelName === 'V1'
                    "
                    :label="true"
                    >继续上会</el-radio
                  >
                  <el-radio
                    :disabled="
                      taskMissionTitle === '新增上会任务' && pannelName === 'V1'
                    "
                    :label="false"
                    >转线下跟进</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="主负责人" prop="masterId">
                <el-select
                  v-model="masterID"
                  @change="masterTaskChanges"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="12" v-if="pannelName === 'V2'">
              <el-form-item label="会议议程">
                <el-row :gutter="0">
                  <el-col :span="11">
                    <el-form-item prop="startTime">
                      <el-time-select
                        placeholder="起始时间"
                        style="width:100%;"
                        value-format="HH:mm"
                        v-model="taskMissionForm.agendaStart"
                        :picker-options="{
                          start: '08:00',
                          step: '00:05',
                          end: '23:59',
                          maxTime: taskMissionForm.agendaEnd,
                        }"
                      >
                      </el-time-select>
                    </el-form-item>
                  </el-col>
                  <el-col class="line" :span="2"
                    ><div style="text-align:center;">-</div></el-col
                  >
                  <el-col :span="11">
                    <el-form-item prop="endTime">
                      <el-time-select
                        placeholder="结束时间"
                        style="width:100%;"
                        value-format="HH:mm"
                        v-model="taskMissionForm.agendaEnd"
                        :picker-options="{
                          start: '08:00',
                          step: '00:05',
                          end: '23:59',
                          minTime: taskMissionForm.agendaStart,
                        }"
                      >
                      </el-time-select>
                    </el-form-item>
                  </el-col>
                </el-row>
              </el-form-item>
            </el-col>

            <el-col :span="12">
              <el-form-item label="其他负责人" prop="otherPrincipalUserName">
                <el-select
                  v-model="taskMissionForm.otherPrincipalUserId"
                  filterable
                  clearable
                  multiple
                  @change="selectTaskIdChange"
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in allUserList"
                    :key="ind"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="申请人" prop="applicantId">
                <el-select
                  v-model="taskMissionForm.applicantId"
                  @change="changeTaskChange"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="备注" prop="remark">
                <el-input
                  type="textarea"
                  v-model="taskMissionForm.remark"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionTitle === '任务编辑'">
            <el-col :span="24">
              <el-form-item
                :label="pannelName === 'V2' ? 'V2修订记录' : 'V1修订记录'"
                prop="meetingFeedBackTaskLogs"
              >
                <ul class="recordsUl recordsUl2">
                  <li
                    v-for="(item,
                    index) in taskMissionForm.meetingFeedBackTaskLogs"
                    :key="index"
                  >
                    <div class="log_detail">
                      <div
                        class="log_detail_footer"
                        v-html="item.content"
                      ></div>
                    </div>
                  </li>
                </ul>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-if="pannelName === 'V2'">
              <el-form-item label="" prop="agenda">
                <el-input
                  type="hidden"
                  v-model="taskMissionForm.agenda"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="taskMissionVisibleChange"
          >取 消</el-button
        >
        <el-button
          type="primary"
          size="small"
          @click="saveTaskMissionForm('taskMissionForm')"
          class="submitReme"
          >保存</el-button
        >
      </template>
    </CommonDialog>
    <!-- V1 V2发布 -->
    <CommonDialog
      :title="versionTitle"
      width="90%"
      v-bind:dialogVisible="versionFormVisible"
      v-if="versionFormVisible"
      @on-change-dialogVisible="clearForm('versionForm')"
      class="versionForm"
      top="5vh"
    >
      <template #body>
        <el-form
          class="versionForm"
          ref="versionForm"
          label-position="top"
          :model="versionForm"
          :rules="versionFormRules"
          size="mini"
          label-width="80px"
        >
          <div>
            <el-col :span="24">
              <el-form-item label="主题" prop="title">
                <el-input v-model="versionForm.title"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="收件人" prop="recipientUser">
                <multiselect
                  v-model="versionForm.recipientUser"
                  deselect-label="已选中"
                  track-by="email"
                  label="email"
                  placeholder="输入关键词或选择"
                  :options="otherPrincipalList"
                  :close-on-select="false"
                  :multiple="true"
                  :taggable="true"
                  tag-position="bottom"
                  tag-placeholder="回车添加下拉框"
                  selectLabel="回车选择"
                  selectGroupLabel="回车选择整个分组"
                  selectedLabel="已选择"
                  deselectLabel="回车取消选择"
                  deselectGroupLabel="回车取消选择"
                  :custom-label="nameWithLang"
                  searchable
                  @tag="addTag"
                >
                </multiselect>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="抄送人" prop="recipients">
                <multiselect
                  v-model="versionForm.copyRecipients"
                  deselect-label="已选中"
                  track-by="email"
                  label="email"
                  placeholder="输入关键词或选择"
                  :options="otherPrincipalList"
                  :close-on-select="false"
                  :multiple="true"
                  :taggable="true"
                  tag-position="bottom"
                  tag-placeholder="回车添加下拉框"
                  selectLabel="回车选择"
                  selectGroupLabel="回车选择整个分组"
                  selectedLabel="已选择"
                  deselectLabel="回车取消选择"
                  deselectGroupLabel="回车取消选择"
                  :custom-label="nameWithLang"
                  searchable
                  @tag="addTag2"
                >
                </multiselect>
              </el-form-item>
            </el-col>

            <el-col :span="24">
              <el-form-item label="发布内容" prop="content">
                <vue-tinymce v-model="versionForm.content" :setting="setting" />
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="附加">
                <a class="filesHv" href="#">
                  <span class="el-icon-document">
                    {{ versionForm.appendixsName }}</span
                  >
                </a>
              </el-form-item>
            </el-col>
          </div>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="clearForm('versionForm')"
          >取 消</el-button
        >

        <el-button
          type="primary"
          v-loading.fullscreen.lock="fullscreenLoading"
          @click="saveVersionForm('versionForm')"
          size="small"
          >发 送</el-button
        >
      </template>
    </CommonDialog>
    <!-- 会议记录新增反馈 -->
    <CommonDialog
      title="新增反馈"
      width="50%"
      v-bind:dialogVisible="recordsFormVisible"
      @on-change-dialogVisible="clearForm('recordsForm')"
      class="recordsForm"
      top="10vh"
    >
      <template #body>
        <el-form
          class="recordsForm"
          ref="recordsForm"
          label-position="left"
          :model="recordsForm"
          :rules="recordsFormRules"
          size="mini"
          label-width="80px"
        >
          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input
                  v-model.number="recordsForm.feedBackNumber"
                  @input="selectTaskChange"
                  ><template slot="append"
                    ><el-button
                      style="background: #409EFF;color:#fff;border-top-left-radius: 0;border-bottom-left-radius: 0;"
                      type="primary"
                      @click="searchIdsForFeed('recordsForm')"
                      icon="el-icon-search"
                      >查询</el-button
                    ></template
                  >
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="所属产品" prop="productName">
                <el-input v-model="recordsForm.productName" readonly disabled>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="标题" prop="title">
                <el-input v-model="recordsForm.title" readonly disabled>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>
      <template #dialog_footer>
        <el-button
          class="insertCancel"
          size="small"
          @click="clearForm('recordsForm')"
          >取 消</el-button
        >

        <el-button
          type="primary"
          size="small"
          :disabled="!couldClick"
          @click="saveRecordsForm('recordsForm')"
          >保存</el-button
        >
      </template>
    </CommonDialog>
    <!-- 删除  -->
    <CommonDialog
      title="删除"
      width="20.1%"
      v-bind:dialogVisible="deleteDialogVisible"
      @on-change-dialogVisible="closeDelete"
      class="deleteDialog"
      top="10vh"
    >
      <template #body>
        确认删除该条数据吗?
      </template>
      <template #dialog_footer>
        <el-button
          class="insertCancel"
          @click="deleteDialogVisible = false"
          size="small"
          >取 消</el-button
        >
        <el-button type="danger" @click="deleteConfirm" size="small"
          >删除</el-button
        >
      </template>
    </CommonDialog>

    <!-- cellEditDialogRules -->
    <!-- 关闭弹出框 -->
    <el-dialog
      title="关闭"
      width="75%"
      top="5vh"
      :visible.sync="closeDialogVisible"
      :close-on-click-modal="false"
      :before-close="closeDialogVisibleChange"
    >
      <el-form
        :model="closeForm"
        ref="closeForm"
        :rules="closeFormRules"
        label-width="100"
        label-position="top"
      >
        <el-form-item label="关闭原因" class="closeReason" prop="reason">
          <el-select v-model="closeForm.reason" placeholder="关闭原因">
            <el-option
              v-for="(item, index) in closeReasonList"
              :key="index"
              :label="item.text"
              :value="item.id"
            ></el-option>
          </el-select>
        </el-form-item>

        <el-form-item label="备注" class="extra closeReason" prop="remark">
          <socialUpload
            :contentDefault="closeForm.remark"
            @getContent="getCloseRemark"
          ></socialUpload>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="closeCancel">取 消</el-button>

        <el-button
          type="primary"
          @click="confirmCloseRow('closeForm')"
          size="small"
          >确认</el-button
        >
      </div>
    </el-dialog>
    <!-- <CommonDialog
      title="关闭"
      width="75%"
      v-bind:dialogVisible="closeDialogVisible"
      @on-change-dialogVisible="closeChange"
      :before-close="closeDialogVisibleChange"
      class="close"
      top="10vh"
    >
      <template #body>

      </template>

      <template #dialog_footer>

      </template>
    </CommonDialog> -->
    <!-- V3子任务 -->
    <el-dialog
      title="任务"
      width="90%"
      top="5vh"
      :visible.sync="updateDialogShow"
      :close-on-click-modal="false"
      :before-close="cancelCreate"
      custom-class="regionDialog"
    >
      <el-button
        type="primary"
        v-if="tskTypes"
        @click="createRow"
        style="float: right; margin-bottom: 10px"
        >创建</el-button
      >
      <el-form :model="gridData" :rules="gridDatarules" ref="gridDataform">
        <el-table
          style="width: 100%"
          border
          max-height="550"
          :cell-style="{ textAlign: 'center', height: '60px' }"
          :header-cell-style="{
            textAlign: 'center',
            height: '50px',
            backgroundColor: '#FFFFFF',
          }"
          :data="gridData.data" >
          <el-table-column property="taskNumber" label="任务ID" min-width="100">
            <template slot-scope="scope">
              <span @click="totaskDetail(scope.row.taskNumber)" class="link-type">{{ scope.row.taskNumber === 0 ? ' ' : scope.row.taskNumber }}</span>
            </template>
          </el-table-column>
          <el-table-column property="ctag" label="C1/C2" min-width="200">
            <template slot-scope="scope">
              <el-form-item v-if="scope.row.isEdit && scope.row.type === 'add'">
                <el-select v-model="scope.row.ctag">
                  <el-option label="C1" :value="0"></el-option>
                  <el-option label="C2" :value="1"></el-option>
                </el-select>
              </el-form-item>
              <span v-else>{{ scope.row.ctag | tagsFilter }}</span>
            </template>
          </el-table-column>
          <el-table-column property="taskType" label="任务类型" min-width="200">
            <!-- taskType: data.ctag,
                sourceId: data.sourceId,
                sourceUrl: data.sourceUrl, -->
            <template slot="header">
              <i class="cell-required"></i>
              <span>任务类型</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit && scope.row.type === 'add'"
                :prop="'data.' + scope.$index + '.taskType'"
                :rules="gridDatarules.taskType"
              >
                <el-select
                  v-model="scope.row.taskType"
                  @change="getFeedBackCloseSet($event, scope.row)"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option label="反馈" :value="0"></el-option>
                  <el-option label="BUG" :value="1"></el-option>
                  <el-option label="需求" :value="2"></el-option>
                </el-select>
              </el-form-item>
              <span v-else>{{ scope.row.taskType }}</span>
            </template>
          </el-table-column>
          <el-table-column property="sourceId" label="源ID" min-width="200">
            <!-- taskType: data.ctag,
                sourceId: data.sourceId,
                sourceUrl: data.sourceUrl, -->
            <template slot="header">
              <i class="cell-required"></i>
              <span>源ID</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit && scope.row.type === 'add'"
                :prop="'data.' + scope.$index + '.sourceId'"
                :rules="scope.row.taskType === 0 ? [] : gridDatarules.sourceId"
              >
                <el-select
                  placeholder="请选择绑定ID"
                  v-model="scope.row.sourceId"
                  :disabled="scope.row.taskType === 0"
                  @change="changeSourceId($event, scope.row)"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="item in scope.row.bangIdList"
                    :key="item.id"
                    :label="item.zenMasterId"
                    :value="item.zenMasterId"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <span v-else>{{ scope.row.sourceId }}</span>
            </template>
          </el-table-column>
          <el-table-column property="title" label="主题" min-width="200">
            <template slot="header">
              <i class="cell-required"></i>
              <span>主题</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit && scope.row.type === 'add'"
                :prop="'data.' + scope.$index + '.title'"
                :rules="gridDatarules.title"
              >
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入主题"
                  v-model="scope.row.title"
                >
                </el-input>
              </el-form-item>
              <span v-else>{{ scope.row.title }}</span>
            </template>
          </el-table-column>
          <el-table-column property="nextPlan" label="跟踪事项" min-width="200">
            <template slot="header">
              <i class="cell-required"></i>
              <span>跟踪事项</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit"
                :prop="'data.' + scope.$index + '.nextPlan'"
                :rules="gridDatarules.nextPlan"
              >
                <el-input
                  v-if="scope.row.isEdit"
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入跟踪事项"
                  v-model="scope.row.nextPlan"
                >
                </el-input>
              </el-form-item>

              <span v-else>{{ scope.row.nextPlan }}</span>
            </template>
          </el-table-column>
          <el-table-column
            property="currentProgress"
            label="当前进展"
            min-width="200"
          >
            <template slot="header">
              <i class="cell-required"></i>
              <span>当前进展</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit"
                :prop="'data.' + scope.$index + '.currentProgress'"
                :rules="gridDatarules.currentProgress"
              >
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入当前进展"
                  v-model="scope.row.currentProgress"
                >
                </el-input>
              </el-form-item>
              <span v-else>{{ scope.row.currentProgress }}</span>
            </template>
          </el-table-column>
          <el-table-column
            property="responsibleUserId"
            label="责任人"
            min-width="200"
          >
            <template slot="header">
              <i class="cell-required"></i>
              <span>责任人</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit"
                :prop="'data.' + scope.$index + '.responsibleUserId'"
                :rules="gridDatarules.responsibleUserId"
              >
                <el-select
                  v-model="scope.row.responsibleUserId"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in recrodsUserList"
                    :key="ind"
                    :label="items.displayName"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>

              <span v-else>{{ scope.row.responsibleUserName }}</span>
            </template>
          </el-table-column>
          <el-table-column
            property="expectedCompletedDate"
            label="计划完成时间"
            min-width="250"
          >
            <template slot="header">
              <i class="cell-required"></i>
              <span>计划完成时间</span>
            </template>
            <template slot-scope="scope">
              <el-form-item
                v-if="scope.row.isEdit"
                :prop="'data.' + scope.$index + '.expectedCompletedDate'"
                :rules="gridDatarules.expectedCompletedDate"
              >
                <el-date-picker
                  v-if="scope.row.isEdit"
                  v-model="scope.row.expectedCompletedDate"
                  :picker-options="pickerOptions"
                  type="date"
                  value-format="yyyy-MM-dd"
                  placeholder="选择日期时间"
                >
                </el-date-picker>
              </el-form-item>
              <span v-else>{{
                scope.row.expectedCompletedDate | formatTimer
              }}</span>
            </template>
          </el-table-column>
          <el-table-column
            property="continueMeeting"
            label="是否继续上会"
            min-width="200"
          >
            <template slot="header">
              <i class="cell-required"></i>
              <span>是否继续上会</span>
            </template>
            <template slot-scope="scope">
              <el-form-item v-if="scope.row.isEdit">
                <el-select v-model="scope.row.continueMeeting" clearable>
                  <el-option label="继续上会" :value="true"></el-option>
                  <el-option label="转线下跟进" :value="false"></el-option>
                </el-select>
              </el-form-item>
              <span v-else>{{
                scope.row.continueMeeting | transTrue2False
              }}</span>
            </template>
          </el-table-column>
          <el-table-column
            v-if="tskTypes"
            label="操作"
            fixed="right"
            align="center"
            min-width="200"
          >
            <template slot-scope="scope">
              <el-tooltip
                :content="scope.row.isEdit ? '保存' : '编辑'"
                placement="top"
                effect="light"
              >
                <span
                  @click="gridDatatChange(scope.row, true)"
                  :class="scope.row.isEdit ? 'option_confirm' : 'option_update'"
                ></span>
              </el-tooltip>
              <el-tooltip
                v-if="!scope.row.isEdit"
                content="关闭"
                placement="top"
                effect="light"
              >
                <span
                  class="option_close"
                  @click="handleClose(scope.row)"
                ></span>
              </el-tooltip>
              <el-link :underline="false" v-else>
                <el-tooltip content="取消" placement="top" effect="light">
                  <span
                    @click="gridDatatChange(scope.row, false)"
                    class="option_reback"
                  ></span>
                </el-tooltip>
              </el-link>
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="cancelCreate">关闭</el-button>
      </div>
    </el-dialog>
    <el-dialog
      title="新建任务"
      :close-on-click-modal="false"
      :visible.sync="dialogFormVisible"
      :width="'50%'"
    >
      <el-form
        ref="dataForm"
        :rules="dialogFormRules"
        :model="dialogFormTemp"
        label-position="left"
        label-width="100px"
        style="width: 100%;"
      >
        <el-row :gutter="10">
          <el-col :span="12">
            <el-form-item label="反馈ID" prop="feedBackNumber">
              <el-input
                v-model.number="dialogFormTemp.feedBackNumber"
                @input="changeFeedId"
                ><template slot="append"
                  ><el-button
                    style="background: #409EFF;color:#fff;border-top-left-radius: 0;border-bottom-left-radius: 0;"
                    type="primary"
                    @click="searchIdsForFeed('dataForm')"
                    icon="el-icon-search"
                    >查询</el-button
                  ></template
                >
              </el-input>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="任务ID" prop="taskNumber">
              <el-select
                v-model="dialogFormTemp.taskNumber"
                placeholder="请选择任务ID"
                filterable
                clearable
                @change="changeV3TaskId"
                style="width: 100%"
              >
                <el-option
                  v-for="(items, ind) in taskList"
                  :key="ind"
                  :label="items.taskNumber"
                  :value="items.taskNumber"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="24">
            <el-form-item label="所属产品" prop="productName">
              <el-input v-model="dialogFormTemp.productName" readonly disabled>
              </el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="24">
            <el-form-item label="任务标题" prop="title">
              <el-input v-model="dialogFormTemp.title" readonly disabled>
              </el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">
          取 消
        </el-button>
        <el-button type="primary" @click="createData" :disabled="!couldClick">
          保 存
        </el-button>
      </div>
    </el-dialog>
    <div class="selectCondition">
      <el-tabs v-model="pannelName" @tab-click="handleClick">
        <el-tab-pane label="V1" name="V1"></el-tab-pane>
        <el-tab-pane label="V2" name="V2"></el-tab-pane>
        <el-tab-pane label="V3" name="third"></el-tab-pane>
        <el-tab-pane label="严重超期记录" name="fourth"></el-tab-pane>
      </el-tabs>
      <div class="aboutOptions">
        <el-button type="primary" size="small" @click="goback">返回</el-button>
        <el-button
          type="primary"
          v-show="pannelName === 'third'"
          v-has="'M1111022'"
          size="small"
          @click="synchronous"
          >同步</el-button
        >
        <el-button
          type="primary"
          v-show="pannelName === 'fourth'"
          v-has="'M1111042'"
          size="small"
          @click="synchronous"
          >同步</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'V1'"
          v-has="'M1111002'"
          @click="exportTable"
          >导出</el-button
        >

        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'V2'"
          v-has="'M1111013'"
          @click="exportTable"
          >导出</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'third'"
          v-has="'M1111023'"
          @click="exportRecord"
          >导出</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'fourth'"
          v-has="'M1111043'"
          @click="exportRecord"
          >导出</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'V1'"
          v-has="'M1111003'"
          @click="versionOneClick('V1')"
          >V1邮件</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName === 'V2'"
          v-has="'M1111014'"
          @click="versionOneClick('V2')"
          >V2邮件</el-button
        >
        <el-button
          type="primary"
          v-show="pannelName === 'V1'"
          v-has="'M1111004'"
          @click="publishClick"
          size="small"
          >发布</el-button
        >
        <el-button
          type="primary"
          v-show="pannelName === 'V2'"
          v-has="'M1111040'"
          @click="publishClick"
          size="small"
          >发布</el-button
        >
      </div>
    </div>

    <div class="tableContainer">
      <el-card
        class="TopDetailTable"
        v-show="pannelName === 'V1' || pannelName === 'V2'"
      >
        <el-row class="tabsName">
          <el-radio-group v-model="v1ShowType" @change="changeV1FedOrTask">
            <el-radio-button label="1">反馈</el-radio-button>
            <el-radio-button label="2">任务</el-radio-button>
          </el-radio-group>
        </el-row>
        <div v-show="v1ShowType === '1'">
          <el-form
            v-model="searchConditionForm"
            :inline="true"
            class="mettingFormClass"
          >
            <el-row
              type="flex"
              class="row-bg"
              justify="end"
              style="flex-wrap: wrap"
            >
              <el-form-item label="" class="cardLeft">
                <span class="cardTitle">超期反馈</span>
              </el-form-item>
              <el-form-item label="" style="margin-left:75px;" prop="productId">
                <el-select
                  v-model="searchConditionForm.productId"
                  multiple
                  placeholder="请选择所属产品"
                  filterable
                  clearable
                  collapse-tags
                >
                  <el-option value="" label="全部产品"></el-option>
                  <el-option
                    v-for="(item, index) in userProduct"
                    :key="index"
                    :label="item.name"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="">
                <el-select
                  v-model="searchConditionForm.autoCreateFeedback"
                  placeholder="请选数据类型"
                  filterable
                  clearable
                  class="selectType"
                  style="width: 100%"
                >
                  <el-option label="全部数据类型" value=""></el-option>
                  <el-option label="自动拉取" :value="true"></el-option>
                  <el-option label="手动上会" :value="false"></el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="" prop="feedbackNumber">
                <el-input
                  clearable
                  v-model="searchConditionForm.feedbackNumber"
                  placeholder="输入反馈ID搜索"
                ></el-input>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V2'">
                <el-button
                  v-has="'M1111054'"
                  type="primary"
                  size="small"
                  @click="searchTable"
                  >搜索</el-button
                >
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V1'">
                <el-button
                  type="primary"
                  v-has="'M1111044'"
                  size="small"
                  @click="searchTable"
                  >搜索</el-button
                >
              </el-form-item>
              <el-form-item label="">
                <el-button type="primary" size="small" @click="resetTable"
                  >重置</el-button
                >
              </el-form-item>
            </el-row>
            <el-row
              type="flex"
              class="row-bg"
              justify="end"
              style="flex-wrap: wrap"
            >
                <el-form-item label="" v-show="editState === false && pannelName === 'V2'">
                  <el-button
                    type="danger"
                    v-has="'M1111010'"
                    size="small"
                    @click="click_delete"
                    >批量删除</el-button
                  >
                </el-form-item>
                <el-form-item label="" v-show="editState === false && pannelName === 'V1'">
                  <el-button
                    type="danger"
                    v-has="'M1111007'"
                    size="small"
                    @click="click_delete"
                    >批量删除</el-button
                  >
                </el-form-item>

              <el-form-item label="" key="222" v-if="editState">
                <el-button
                  type="primary"
                  size="small"
                  @click="calcleEdit('fed')"
                  >取消编辑</el-button
                >
              </el-form-item>
                <el-form-item label="" v-show="editState === false && pannelName === 'V2'">
                  <el-button
                    type="primary"
                    v-has="'M1111017'"
                    size="small"
                    @click="editTable"
                    >编辑</el-button
                  >
                </el-form-item>
                <el-form-item label="" v-show="editState === false && pannelName === 'V1'">
                  <el-button
                    type="primary"
                    v-has="'M1111006'"
                    size="small"
                    @click="editTable"
                    >编辑</el-button
                  >
                </el-form-item>

              <el-form-item
                label=""
                v-show="pannelName === 'V2'"
                v-has="'M1111047'"
              >
                <el-button type="success" size="small" @click="saveTable"
                  >保存</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-show="pannelName === 'V1'"
                v-has="'M1111045'"
              >
                <el-button type="success" size="small" @click="saveTable"
                  >保存</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-show="pannelName === 'V1'"
                v-has="'M1111005'"
              >
                <el-button
                  type="primary"
                  size="small"
                  @click="addCreateFeedBack('V1', 'add')"
                  >新增反馈</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-show="pannelName === 'V2'"
                v-has="'M1111015'"
              >
                <el-button
                  type="primary"
                  size="small"
                  @click="addCreateFeedBack('V2', 'add')"
                  >新增反馈</el-button
                >
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V1'">
                <el-upload
                  class="upload-demo"
                  :action="fileUpload"
                  :headers="token"
                  :on-success="onFileSuccess"
                  :show-file-list="false"
                  :on-error="onFileError"
                >
                  <el-button size="small" type="primary">导入</el-button>
                </el-upload>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V2'">
                <el-upload
                  class="upload-demo"
                  :action="fileUploadV2"
                  :headers="token"
                  :on-success="onFileSuccess"
                  :show-file-list="false"
                  :on-error="onFileError"
                >
                  <el-button size="small" type="primary">导入</el-button>
                </el-upload>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V2'">
                <el-popover
                  placement="bottom-start"
                  width="150"
                  trigger="click"
                >
                  <el-checkbox-group v-model="v2_top_colOptions" :min="3">
                    <el-checkbox
                      v-for="item in v2_top_colSelect"
                      :label="item"
                      :key="item"
                      class="checkItem"
                    ></el-checkbox>
                  </el-checkbox-group>
                  <el-button slot="reference" type="primary" size="small"
                    >字段管理</el-button
                  >
                </el-popover>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V1'">
                <el-popover
                  placement="bottom-start"
                  width="150"
                  trigger="click"
                >
                  <el-checkbox-group v-model="v1_top_colOptions" :min="3">
                    <el-checkbox
                      v-for="item in v1_top_colSelect"
                      :label="item"
                      :key="item"
                      class="checkItem"
                    ></el-checkbox>
                  </el-checkbox-group>
                  <el-button slot="reference" type="primary" size="small"
                    >字段管理</el-button
                  >
                </el-popover>
              </el-form-item>
            </el-row>
          </el-form>
        </div>
        <div v-show="v1ShowType === '2'">
          <el-form
            v-model="searchTaskForm"
            :inline="true"
            class="mettingFormClass"
          >
            <el-row
              type="flex"
              class="row-bg"
              justify="end"
              style="flex-wrap: wrap"
            >
              <el-form-item label="" class="cardLeft">
                <span class="cardTitle">反馈任务</span>
              </el-form-item>
              <el-form-item label="" style="margin-left:75px;" prop="productId">
                <el-select
                  v-model="searchTaskForm.productId"
                  multiple
                  placeholder="请选择所属产品"
                  filterable
                  clearable
                  collapse-tags
                >
                  <el-option value="" label="全部产品"></el-option>
                  <el-option
                    v-for="(item, index) in userProduct"
                    :key="index"
                    :label="item.name"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="">
                <el-select
                  v-model="searchTaskForm.autoCreateTask"
                  placeholder="请选数据类型"
                  filterable
                  clearable
                  class="selectType"
                  style="width: 100%"
                >
                  <el-option label="全部数据类型" value=""></el-option>
                  <el-option label="自动拉取" :value="true"></el-option>
                  <el-option label="手动上会" :value="false"></el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="" prop="taskNumber">
                <el-input
                  clearable
                  v-model="searchTaskForm.taskNumber"
                  placeholder="输入任务ID搜索"
                ></el-input>
              </el-form-item>
                <el-form-item label="" v-show="!editTskState && pannelName === 'V2'">
                  <el-button
                    type="primary"
                    v-has="'M1111056'"
                    size="small"
                    @click="search_tsk_Table"
                    >搜索</el-button
                  >
                </el-form-item>
                <el-form-item label="" v-show="!editTskState && pannelName === 'V1'">
                  <el-button
                    type="primary"
                    size="small"
                    v-has="'M1111054'"
                    @click="search_tsk_Table"
                    >搜索</el-button
                  >
                </el-form-item>

              <el-form-item label="">
                <el-button type="primary" size="small" @click="reset_tsk_Table"
                  >重置</el-button
                >
              </el-form-item>
            </el-row>
            <el-row
              type="flex"
              class="row-bg"
              justify="end"
              style="flex-wrap: wrap"
            >
                <el-form-item label="" v-show="!editTskState && pannelName === 'V2'">
                  <el-button
                    type="danger"
                    v-has="'M1111019'"
                    size="small"
                    @click="click_tsk_delete"
                    >批量删除</el-button
                  >
                </el-form-item>
                <el-form-item label="" v-show="!editTskState && pannelName === 'V1'">
                  <el-button
                    type="danger"
                    v-has="'M1111010'"
                    size="small"
                    @click="click_tsk_delete"
                    >批量删除</el-button
                  >
                </el-form-item>

              <el-form-item label="" key="333" v-show="editTskState">
                <el-button
                  type="primary"
                  size="small"
                  @click="calcleEdit('tsk')"
                  >取消编辑</el-button
                >
              </el-form-item>
                <el-form-item label="" v-show="!editTskState && pannelName === 'V2'">
                  <el-button
                    type="primary"
                    v-has="'M1111020'"
                    size="small"
                    @click="editTskTable"
                    >编辑</el-button
                  >
                </el-form-item>
                <el-form-item label="" v-show="!editTskState && pannelName === 'V1'">
                  <el-button
                    type="primary"
                    v-has="'M1111009'"
                    size="small"
                    @click="editTskTable"
                    >编辑</el-button
                  >
                </el-form-item>

              <el-form-item
                label=""
                v-show="pannelName === 'V2'"
                v-has="'M1111057'"
              >
                <el-button type="success" size="small" @click="saveTskTable"
                  >保存</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-show="pannelName === 'V1'"
                v-has="'M1111055'"
              >
                <el-button type="success" size="small" @click="saveTskTable"
                  >保存</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-has="'M1111008'"
                v-show="pannelName === 'V1'"
              >
                <el-button
                  type="primary"
                  size="small"
                  @click="addtaskMission('V1', 'add')"
                  >新增任务</el-button
                >
              </el-form-item>
              <el-form-item
                label=""
                v-show="pannelName === 'V2'"
                v-has="'M1111018'"
              >
                <el-button
                  type="primary"
                  size="small"
                  @click="addtaskMission('V2', 'add')"
                  >新增任务</el-button
                >
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V1'">
                <el-upload
                  class="upload-demo"
                  :action="fileTskUpload"
                  :headers="token"
                  :on-success="onFileSuccess"
                  :show-file-list="false"
                  :on-error="onFileError"
                >
                  <el-button size="small" type="primary">导入</el-button>
                </el-upload>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V2'">
                <el-upload
                  class="upload-demo"
                  :action="fileTskUploadV2"
                  :headers="token"
                  :on-success="onFileSuccess"
                  :show-file-list="false"
                  :on-error="onFileError"
                >
                  <el-button size="small" type="primary">导入</el-button>
                </el-upload>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V2'">
                <el-popover
                  placement="bottom-start"
                  width="150"
                  trigger="click"
                >
                  <el-checkbox-group v-model="v2_bottom_colOptions" :min="3">
                    <el-checkbox
                      v-for="item in v2_bottom_colSelect"
                      :label="item"
                      :key="item"
                      class="checkItem"
                    ></el-checkbox>
                  </el-checkbox-group>
                  <el-button slot="reference" type="primary" size="small"
                    >字段管理</el-button
                  >
                </el-popover>
              </el-form-item>
              <el-form-item label="" v-show="pannelName === 'V1'">
                <el-popover
                  placement="bottom-start"
                  width="150"
                  trigger="click"
                >
                  <el-checkbox-group v-model="v1_bottom_colOptions" :min="3">
                    <el-checkbox
                      v-for="item in v1_bottom_colSelect"
                      :label="item"
                      :key="item"
                      class="checkItem"
                    ></el-checkbox>
                  </el-checkbox-group>
                  <el-button slot="reference" type="primary" size="small"
                    >字段管理</el-button
                  >
                </el-popover>
              </el-form-item>
            </el-row>
          </el-form>
        </div>
        <div v-show="pannelName === 'V1'">
          <div v-show="v1ShowType === '1'">
            <el-form
              :model="overDueFeedBackData1"
              :rules="overDueFeedBackData1rules"
              ref="overDueFeedBackData1form"
            >
              <el-table

                :data="overDueFeedBackData1.data"
                v-loading="overDueFeedBackDataloading"
                :cell-class-name="tableV1ClassName"
                @selection-change="handleSelectionChange"
                row-key="id"
                border
                max-height="500"
                style="width: 100%"
                ref="overDueFeedBackRef1"
                :cell-style="{ textAlign: 'center', height: '60px' }"
                :header-cell-style="{
                  textAlign: 'center',
                  height: '50px',
                  backgroundColor: '#FFFFFF',
                }"
              >
                <!-- :selectable="checkSelectable" -->
                <el-table-column type="selection" width="55"> </el-table-column>
                <template v-for="(v, i) in overDueFeedBackData1.columns">
                  <template v-if="v.title == '所属产品'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="productName"
                      label="所属产品"
                      :min-width="v.width"
                      :key="v.field"
                    >
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '上会原因'">
                    <el-table-column
                      prop="discussionContent"
                      v-if="v.istrue"
                      label="上会原因"
                      width="300"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.discussionContent }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.discussionContent'
                            "
                            :rules="overDueFeedBackData1rules.discussionContent"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model="scope.row.discussionContent"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '是否继续上会'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="continueMeetingTag"
                      label="是否继续上会"
                      width="300"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.continueMeetingTagString }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.continueMeetingTag'
                            "
                            :rules="
                              overDueFeedBackData1rules.continueMeetingTag
                            "
                          >
                            <el-radio-group
                              v-model="scope.row.continueMeetingTag"
                            >
                              <el-radio :label="true">继续上会</el-radio>
                              <el-radio :label="false">转线下跟进</el-radio>
                            </el-radio-group>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '主负责人'">
                    <el-table-column
                      prop="masterId"
                      label="主负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.master }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.masterId'"
                            :rules="overDueFeedBackData1rules.masterId"
                          >
                            <el-select
                              v-model="scope.row.masterId"
                              @change="changeTableMaster($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.masterlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '其他负责人'">
                    <el-table-column
                      prop="otherPrincipalUserId"
                      label="其他负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.otherPrincipalUserNameStr }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.otherPrincipalUserId'
                            "
                            :rules="
                              overDueFeedBackData1rules.otherPrincipalUserId
                            "
                          >
                            <easySelect
                              :max="10"
                              @change="changeOthers($event, scope.row)"
                              :value="scope.row.otherPrincipalUserId"
                              :options="allUserList"
                            />
                            <!-- <el-select
                                v-model="scope.row.otherPrincipalUserId"
                                multiple
                                filterable
                                placeholder="请输入关键词"
                                :filter-method="((query)=>{ filterList(query,scope.row) })"
                               >
                                <el-option
                                v-for="(item,keys) in scope.row.otherList"
                                :label="item.name"
                                :key="item.id+keys"
                                :value="item.id">
                                </el-option>
                            </el-select> -->
                            <!-- <el-select
                              v-model="scope.row.otherPrincipalUserId"
                              @change="changeTableOtherList($event, scope.row)"
                              filterable
                              multiple
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in allUserList"
                                :key="ind"
                                :label="items.name"
                                :value="items.id"
                              ></el-option>
                            </el-select> -->
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '申请人'">
                    <el-table-column
                      prop="applicantId"
                      label="申请人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.applicantName }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.applicantId'"
                            :rules="overDueFeedBackData1rules.applicantId"
                          >
                            <el-select
                              v-model="scope.row.applicantId"
                              @change="changeTableApplicant($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.applicantlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '备注'">
                    <el-table-column
                      prop="remark"
                      label="备注"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.remark }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.remark'"
                            :rules="overDueFeedBackData1rules.remark"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model="scope.row.remark"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '修订记录'">
                    <el-table-column
                      prop="log"
                      label="修订记录"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <ul class="recordsUl recordsUl2">
                          <li
                            v-for="(item, index) in scope.row.log"
                            :key="index"
                          >
                            <div class="log_detail">
                              <div
                                class="log_detail_footer"
                                v-html="item.content"
                              ></div>
                            </div>
                          </li>
                        </ul>
                      </template>
                    </el-table-column>
                  </template>

                  <template v-else>
                    <el-table-column
                      :prop="v.field"
                      :label="v.title"
                      :key="i"
                      v-if="v.istrue"
                      :min-width="v.width"
                      :sortable="v.field === 'beyondMarkType'"
                      :fixed="v.fixed"
                    >
                      <template slot="header">
                        <el-tooltip
                          effect="dark"
                          placement="top"
                          v-if="v.field === 'beyondMarkType'"
                        >
                          <div slot="content">
                            超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                          </div>
                          <span>超期标识</span>
                        </el-tooltip>
                        <span v-else>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="v.field === 'beyondMarkType'">
                          <RadioStatusBtn
                            :isClass="true"
                            :type="scope.row[v.field]"
                          ></RadioStatusBtn>
                        </template>
                        <span
                          v-else-if="v.title === '反馈ID'"
                          @click="tofeedBack(scope.row.feedBackId)"
                          class="link-type"
                          >{{ scope.row.feedBackNumber }}</span
                        >
                        <span v-else-if="v.title === '是否继续上会'">{{
                          scope.row[v.field] | transTrue2False
                        }}</span>
                        <span v-else-if="v.title === '数据类型'">{{
                          scope.row[v.field] | transAutoCreate
                        }}</span>
                        <span v-else-if="v.title === '上会状态'">{{
                          scope.row[v.field] | transTrue2False
                        }}</span>
                        <span v-else-if="v.title === '创建时间'">{{
                          scope.row[v.field] | formatTimer
                        }}</span>
                        <div
                          class="recordsUl"
                          v-html="scope.row[v.field]"
                          v-else-if="v.title === '上会原因历史记录'"
                        ></div>

                        <span
                          v-else-if="v.title === '任务ID'"
                          @click="totaskDetail(scope.row.taskNumber)"
                          class="link-type"
                          >{{
                            scope.row.taskNumber === 0
                              ? ' '
                              : scope.row.taskNumber
                          }}</span
                        >
                        <span v-else>{{ scope.row[v.field] }}</span>
                      </template>
                    </el-table-column>
                  </template>
                </template>
              </el-table>
            </el-form>
          </div>
          <div v-show="v1ShowType === '2'">
            <el-form
              :model="feedbackTaskData1"
              :rules="feedbackTaskData1rules"
              ref="feedbackTaskData1form"
            >
              <el-table
                :data="feedbackTaskData1.data"
                v-loading="overDuetaskloading"
                :cell-class-name="tableV1tskClassName"
                @selection-change="handleTskSelectionChange"
                style="width: 100%"
                ref="feedbackTaskDataRef1"
                border
                row-key="id"
                max-height="500"
                :cell-style="{ textAlign: 'center', height: '60px' }"
                :header-cell-style="{
                  textAlign: 'center',
                  height: '50px',
                  backgroundColor: '#FFFFFF',
                }"
              >
                <el-table-column type="selection" width="55"> </el-table-column>
                <template v-for="(v, i) in feedbackTaskData1.columns">
                  <!-- <template v-if="v.title == '反馈ID'">
                <el-table-column
                    prop="feedBackNumber"
                    label="反馈ID"
                    width="100"
                    fixed
                    style="height:100%;"
                    :key="i"
                    v-if="v.istrue"
                >
                    <template slot-scope="scope">
                    <span @click="tofeedBack(scope.row.feedBackId)" class="link-type">{{
                        scope.row.feedBackNumber
                    }}</span>
                    </template>
                </el-table-column>
                </template> -->
                  <template v-if="v.title == '所属产品'">
                    <el-table-column
                      prop="productName"
                      label="所属产品"
                      width="100"
                      :key="i"
                      v-if="v.istrue"
                    >
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '任务ID'">
                    <el-table-column
                      prop="taskNumber"
                      label="任务ID"
                      width="100"
                      :key="i"
                      v-if="v.istrue"
                    >
                      <template slot-scope="scope">
                        <span
                          @click="totaskDetail(scope.row.taskNumber)"
                          class="link-type"
                          >{{
                            scope.row.taskNumber === 0
                              ? ' '
                              : scope.row.taskNumber
                          }}</span
                        >
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '上会原因'">
                    <el-table-column
                      prop="discussionContent"
                      v-if="v.istrue"
                      label="上会原因"
                      width="300"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.discussionContent }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.discussionContent'
                            "
                            :rules="feedbackTaskData1rules.discussionContent"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              v-model="scope.row.discussionContent"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '是否继续上会'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="continueMeetingTag"
                      label="是否继续上会"
                      width="300"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.continueMeetingTagString }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.continueMeetingTag'
                            "
                            :rules="feedbackTaskData1rules.continueMeetingTag"
                          >
                            <el-radio-group
                              v-model="scope.row.continueMeetingTag"
                            >
                              <el-radio :label="true">继续上会</el-radio>
                              <el-radio :label="false">转线下跟进</el-radio>
                            </el-radio-group>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '主负责人'">
                    <el-table-column
                      prop="masterId"
                      label="主负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.master }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.masterId'"
                            :rules="feedbackTaskData1rules.masterId"
                          >
                            <el-select
                              v-model="scope.row.masterId"
                              @change="changeTableMaster($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.masterlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '其他负责人'">
                    <el-table-column
                      prop="otherPrincipalUserId"
                      label="其他负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.otherPrincipalUserNameStr }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.otherPrincipalUserId'
                            "
                            :rules="feedbackTaskData1rules.otherPrincipalUserId"
                          >
                            <easySelect
                              :max="10"
                              @change="changeOthers($event, scope.row)"
                              :value="scope.row.otherPrincipalUserId"
                              :options="allUserList"
                            />
                            <!-- <el-select
                              v-model="scope.row.otherPrincipalUserId"
                              @change="changeTableOtherList($event, scope.row)"
                              filterable
                              multiple
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in allUserList"
                                :key="ind"
                                :label="items.name"
                                :value="items.id"
                              ></el-option>
                            </el-select> -->
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '申请人'">
                    <el-table-column
                      prop="applicantId"
                      label="申请人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.applicantName }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.applicantId'"
                            :rules="feedbackTaskData1rules.applicantId"
                          >
                            <el-select
                              v-model="scope.row.applicantId"
                              @change="changeTableApplicant($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.applicantlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '备注'">
                    <el-table-column
                      prop="remark"
                      label="备注"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.remark }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.remark'"
                            :rules="feedbackTaskData1rules.remark"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model.number="scope.row.remark"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '修订记录'">
                    <el-table-column
                      prop="log"
                      label="修订记录"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <ul class="recordsUl recordsUl2">
                          <li
                            v-for="(item, index) in scope.row.log"
                            :key="index"
                          >
                            <div class="log_detail">
                              <div
                                class="log_detail_footer"
                                v-html="item.content"
                              ></div>
                            </div>
                          </li>
                        </ul>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else>
                    <el-table-column
                      :prop="v.field"
                      :label="v.title"
                      :key="i"
                      v-if="v.istrue"
                      :min-width="v.width"
                      :sortable="v.field === 'beyondMarkType'"
                      :fixed="v.fixed"
                    >
                      <template slot="header">
                        <el-tooltip
                          effect="dark"
                          placement="top"
                          v-if="v.field === 'beyondMarkType'"
                        >
                          <div slot="content">
                            超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                          </div>
                          <span>超期标识</span>
                        </el-tooltip>
                        <span v-else>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="v.field === 'beyondMarkType'">
                          <RadioStatusBtn
                            :isClass="true"
                            :type="scope.row[v.field]"
                          ></RadioStatusBtn>
                        </template>
                        <span
                          v-else-if="v.title === '任务ID'"
                          @click="totaskDetail(scope.row.taskNumber)"
                          class="link-type"
                          >{{
                            scope.row.taskNumber === 0
                              ? ' '
                              : scope.row.taskNumber
                          }}</span
                        >
                        <span v-else-if="v.title === '数据类型'">{{
                          scope.row[v.field] | transAutoCreate
                        }}</span>
                        <span v-else-if="v.title === '上会状态'">{{
                          scope.row[v.field] | transTrue2False
                        }}</span>
                        <span v-else-if="v.title === '任务创建时间'">{{
                          scope.row[v.field] | formatTimer
                        }}</span>
                        <div
                          class="recordsUl"
                          v-html="scope.row[v.field]"
                          v-else-if="v.title === '上会原因历史记录'"
                        ></div>

                        <span
                          v-else-if="v.title === '反馈ID'"
                          @click="tofeedBack(scope.row.feedBackId)"
                          class="link-type"
                          >{{ scope.row[v.field] }}
                        </span>
                        <span v-else>{{ scope.row[v.field] }}</span>
                        <!-- <span v-if="v.title==='是否继续上会'" >{{ scope.row[v.field] | transTrue2False }}</span> -->
                        <!-- <span v-else-if="v.title === '本次会议讨论内容'"><div v-html="scope.row.discussionContent"></div></span>
                        <span v-else-if="v.title === '本周会议讨论内容'"
                            ><div v-html="scope.row.discussionContent"></div
                        ></span> -->
                      </template>
                    </el-table-column>
                  </template>
                </template>

                <!-- <el-table-column label="操作" width="208" fixed="right">
                <template slot-scope="scope">
                <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111009'">
                    <el-tooltip effect="light" content="编辑" placement="top">
                    <span @click="editRow(scope.row, '2')" class="option_export"></span>
                    </el-tooltip>
                </el-link>
                <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111010'">
                    <el-tooltip effect="light" content="删除" placement="top">
                    <span @click="deleteRow(scope.row)" class="option_delete"></span>
                    </el-tooltip>
                </el-link>
                </template>
            </el-table-column> -->
              </el-table>
            </el-form>
          </div>
        </div>
        <div v-show="pannelName === 'V2'">
          <div v-show="v1ShowType === '1'">
            <el-form
              :model="overDueFeedBackData2"
              :rules="overDueFeedBackData2rules"
              ref="overDueFeedBackData2form"
            >
              <el-table
                :data="overDueFeedBackData2.data"
                v-loading="feedbackTaskDataloading"
                @selection-change="handleV2Change"
                style="width: 100%"
                ref="overDueFeedBackRef2"
                max-height="500"
                row-key="id"
                border
                :cell-style="{ textAlign: 'center', height: '60px' }"
                :cell-class-name="tableRowClassName"
                :header-cell-style="{
                  textAlign: 'center',
                  height: '50px',
                  backgroundColor: '#FFFFFF',
                }"
              >
                <el-table-column type="selection" width="55"> </el-table-column>

                <template v-for="(v, i) in overDueFeedBackData2.columns">
                  <template v-if="v.title == '所属产品'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="productName"
                      label="所属产品"
                      width="100"
                      :key="v.field"
                    >
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '本周会议讨论内容'">
                    <el-table-column
                      prop="discussionContent"
                      v-if="v.istrue"
                      label="本周会议讨论内容"
                      width="300"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.discussionContent }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.discussionContent'
                            "
                            :rules="overDueFeedBackData2rules.discussionContent"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model="scope.row.discussionContent"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '是否继续上会'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="continueMeetingTag"
                      label="是否继续上会"
                      width="300"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.continueMeetingTagString }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.continueMeetingTag'
                            "
                            :rules="
                              overDueFeedBackData2rules.continueMeetingTag
                            "
                          >
                            <el-radio-group
                              v-model="scope.row.continueMeetingTag"
                            >
                              <el-radio :label="true">继续上会</el-radio>
                              <el-radio :label="false">转线下跟进</el-radio>
                            </el-radio-group>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '主负责人'">
                    <el-table-column
                      prop="masterId"
                      label="主负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.master }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.masterId'"
                            :rules="overDueFeedBackData2rules.masterId"
                          >
                            <el-select
                              v-model="scope.row.masterId"
                              @change="changeTableMaster($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.masterlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '其他负责人'">
                    <el-table-column
                      prop="otherPrincipalUserId"
                      label="其他负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.otherPrincipalUserNameStr }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.otherPrincipalUserId'
                            "
                            :rules="
                              overDueFeedBackData2rules.otherPrincipalUserId
                            "
                          >
                            <easySelect
                              :max="10"
                              @change="changeOthers($event, scope.row)"
                              :value="scope.row.otherPrincipalUserId"
                              :options="allUserList"
                            />
                            <!-- <el-select
                              v-model="scope.row.otherPrincipalUserId"
                              @change="changeTableOtherList($event, scope.row)"
                              filterable
                              multiple
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in allUserList"
                                :key="ind"
                                :label="items.name"
                                :value="items.id"
                              ></el-option>
                            </el-select> -->
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '申请人'">
                    <el-table-column
                      prop="applicantId"
                      label="申请人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.applicantName }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.applicantId'"
                            :rules="overDueFeedBackData2rules.applicantId"
                          >
                            <el-select
                              v-model="scope.row.applicantId"
                              @change="changeTableApplicant($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.applicantlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '会议议程'">
                    <el-table-column
                      prop="agenda"
                      label="会议议程"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.agenda }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.agendaStart'"
                            :rules="overDueFeedBackData2rules.agendaStart"
                          >
                            <el-time-select
                              placeholder="起始时间"
                              style="width:100%;"
                              value-format="HH:mm"
                              v-model="scope.row.agendaStart"
                              :picker-options="{
                                start: '08:00',
                                step: '00:05',
                                end: '23:59',
                                maxTime: scope.row.agendaEnd,
                              }"
                            >
                            </el-time-select>
                          </el-form-item>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.agendaEnd'"
                            :rules="overDueFeedBackData2rules.agendaEnd"
                          >
                            <el-time-select
                              placeholder="结束时间"
                              style="width:100%;"
                              value-format="HH:mm"
                              v-model="scope.row.agendaEnd"
                              :picker-options="{
                                start: '08:00',
                                step: '00:05',
                                end: '23:59',
                                minTime: scope.row.agendaStart,
                              }"
                            >
                            </el-time-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '备注'">
                    <el-table-column
                      prop="remark"
                      label="备注"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.remark }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.remark'"
                            :rules="overDueFeedBackData2rules.remark"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model="scope.row.remark"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '修订记录'">
                    <el-table-column
                      prop="log"
                      label="修订记录"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <ul class="recordsUl recordsUl2">
                          <li
                            v-for="(item, index) in scope.row.log"
                            :key="index"
                          >
                            <div class="log_detail">
                              <div
                                class="log_detail_footer"
                                v-html="item.content"
                              ></div>
                            </div>
                          </li>
                        </ul>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else>
                    <el-table-column
                      :prop="v.field"
                      :label="v.title"
                      :key="i"
                      v-if="v.istrue"
                      :min-width="v.width"
                      :sortable="v.field === 'beyondMarkType'"
                      :fixed="v.fixed"
                    >
                      <template slot="header">
                        <el-tooltip
                          effect="dark"
                          placement="top"
                          v-if="v.field === 'beyondMarkType'"
                        >
                          <div slot="content">
                            超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                          </div>
                          <span>超期标识</span>
                        </el-tooltip>
                        <span v-else>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="v.field === 'beyondMarkType'">
                          <RadioStatusBtn
                            :isClass="true"
                            :type="scope.row[v.field]"
                          ></RadioStatusBtn>
                        </template>
                        <span v-else-if="v.title === '数据类型'">{{
                          scope.row[v.field] | transAutoCreate
                        }}</span>
                        <span v-else-if="v.title === '上会状态'">{{
                          scope.row[v.field] | transTrue2False
                        }}</span>
                        <div
                          class="recordsUl"
                          v-html="scope.row[v.field]"
                          v-else-if="v.title === '上会原因历史记录'"
                        ></div>
                        <span
                          v-else-if="v.title === '反馈ID'"
                          @click="tofeedBack(scope.row.feedBackId)"
                          class="link-type"
                          >{{ scope.row[v.field] }}</span
                        >
                        <span
                          v-else-if="v.title === '任务ID'"
                          @click="totaskDetail(scope.row.taskNumber)"
                          class="link-type"
                          >{{
                            scope.row.taskNumber === 0
                              ? ' '
                              : scope.row.taskNumber
                          }}</span
                        >
                        <span v-else-if="v.title === '创建时间'">{{
                          scope.row[v.field] | formatTimer
                        }}</span>
                        <span v-else>{{ scope.row[v.field] }}</span>
                      </template>
                    </el-table-column>
                  </template>
                </template>
                <!-- <el-table-column label="操作" width="208" fixed="right">
                <template slot-scope="scope">
                <el-link :underline="false" v-has="'M1111017'">
                    <el-tooltip effect="light" content="编辑" placement="top">
                    <span @click="editRow(scope.row, '3')" class="option_export"></span>
                    </el-tooltip>
                </el-link>
                <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111016'">
                    <el-tooltip effect="light" content="删除" placement="top">
                    <span @click="deleteRow(scope.row)" class="option_delete"></span>
                    </el-tooltip>
                </el-link>
                </template>
            </el-table-column> -->
              </el-table>
            </el-form>
          </div>
          <div v-show="v1ShowType === '2'">
            <el-form
              :model="feedbackTaskData2"
              :rules="feedbackTaskData2rules"
              ref="feedbackTaskData2form"
            >
              <el-table
                :data="feedbackTaskData2.data"
                row-key="id"
                @selection-change="handleTskSelectionChange2"
                v-loading="overDuetaskloading2"
                :cell-class-name="tableRowClassName"
                style="width: 100%"
                ref="feedbackTaskDataRef2"
                border
                max-height="500"
                :cell-style="{ textAlign: 'center', height: '60px' }"
                :header-cell-style="{
                  textAlign: 'center',
                  height: '50px',
                  backgroundColor: '#FFFFFF',
                }"
              >
                <el-table-column type="selection" width="55"> </el-table-column>
                <template v-for="(v, i) in feedbackTaskData2.columns">
                  <template v-if="v.title == '所属产品'">
                    <el-table-column
                      prop="productName"
                      label="所属产品"
                      width="100"
                      :key="i"
                      v-if="v.istrue"
                    >
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '任务ID'">
                    <el-table-column
                      prop="taskNumber"
                      label="任务ID"
                      width="100"
                      :key="i"
                      v-if="v.istrue"
                    >
                      <template slot-scope="scope">
                        <span
                          @click="totaskDetail(scope.row.taskNumber)"
                          class="link-type"
                          >{{
                            scope.row.taskNumber === 0
                              ? ' '
                              : scope.row.taskNumber
                          }}</span
                        >
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '本周会议讨论内容'">
                    <el-table-column
                      prop="discussionContent"
                      v-if="v.istrue"
                      label="本周会议讨论内容"
                      width="300"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.discussionContent }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.discussionContent'
                            "
                            :rules="feedbackTaskData2rules.discussionContent"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model="scope.row.discussionContent"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '是否继续上会'">
                    <el-table-column
                      v-if="v.istrue"
                      prop="continueMeetingTag"
                      label="是否继续上会"
                      width="300"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.continueMeetingTagString }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.continueMeetingTag'
                            "
                            :rules="feedbackTaskData2rules.continueMeetingTag"
                          >
                            <el-radio-group
                              v-model="scope.row.continueMeetingTag"
                            >
                              <el-radio :label="true">继续上会</el-radio>
                              <el-radio :label="false">转线下跟进</el-radio>
                            </el-radio-group>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '主负责人'">
                    <el-table-column
                      prop="masterId"
                      label="主负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.master }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.masterId'"
                            :rules="feedbackTaskData2rules.masterId"
                          >
                            <el-select
                              v-model="scope.row.masterId"
                              @change="changeTableMaster($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.masterlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '其他负责人'">
                    <el-table-column
                      prop="otherPrincipalUserId"
                      label="其他负责人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">

                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.otherPrincipalUserNameStr }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="
                              'data.' + scope.$index + '.otherPrincipalUserId'
                            "
                            :rules="feedbackTaskData2rules.otherPrincipalUserId"
                          >
                            <easySelect
                              :max="10"
                              @change="changeOthers($event, scope.row)"
                              :value="scope.row.otherPrincipalUserId"
                              :options="allUserList"
                            />
                            <!-- <el-select
                              v-model="scope.row.otherPrincipalUserId"
                              @change="changeTableOtherList($event, scope.row)"
                              filterable
                              multiple
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in allUserList"
                                :key="ind"
                                :label="items.name"
                                :value="items.id"
                              ></el-option>
                            </el-select> -->
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '申请人'">
                    <el-table-column
                      prop="applicantId"
                      label="申请人"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <i class="cell-required"></i>
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.applicantName }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.applicantId'"
                            :rules="feedbackTaskData2rules.applicantId"
                          >
                            <el-select
                              v-model="scope.row.applicantId"
                              @change="changeTableApplicant($event, scope.row)"
                              filterable
                              clearable
                              style="width: 100%"
                            >
                              <el-option
                                v-for="(items, ind) in scope.row.applicantlst"
                                :key="ind"
                                :label="items.displayName"
                                :value="items.id"
                              ></el-option>
                            </el-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '会议议程'">
                    <el-table-column
                      prop="agenda"
                      label="会议议程"
                      min-width="220"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot="header">
                        <span>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.agenda }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.agendaStart'"
                            :rules="feedbackTaskData2rules.agendaStart"
                          >
                            <el-time-select
                              placeholder="起始时间"
                              style="width:100%;"
                              value-format="HH:mm"
                              v-model="scope.row.agendaStart"
                              :picker-options="{
                                start: '08:00',
                                step: '00:05',
                                end: '23:59',
                                maxTime: scope.row.agendaEnd,
                              }"
                            >
                            </el-time-select>
                          </el-form-item>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.agendaEnd'"
                            :rules="feedbackTaskData2rules.agendaEnd"
                          >
                            <el-time-select
                              placeholder="结束时间"
                              style="width:100%;"
                              value-format="HH:mm"
                              v-model="scope.row.agendaEnd"
                              :picker-options="{
                                start: '08:00',
                                step: '00:05',
                                end: '23:59',
                                minTime: scope.row.agendaStart,
                              }"
                            >
                            </el-time-select>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '备注'">
                    <el-table-column
                      prop="remark"
                      label="备注"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <template v-if="scope.row.action == 'view'">
                          {{ scope.row.remark }}
                        </template>
                        <template v-else>
                          <el-form-item
                            :prop="'data.' + scope.$index + '.remark'"
                            :rules="feedbackTaskData2rules.remark"
                          >
                            <el-input
                              type="textarea"
                              size="mini"
                              :autosize="{ minRows: 2, maxRows: 6 }"
                              resize="none"
                              v-model.number="scope.row.remark"
                              style="width: 100%;"
                            ></el-input>
                          </el-form-item>
                        </template>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else-if="v.title == '修订记录'">
                    <el-table-column
                      prop="log"
                      label="修订记录"
                      width="300"
                      v-if="v.istrue"
                      :key="v.field"
                    >
                      <template slot-scope="scope">
                        <ul class="recordsUl recordsUl2">
                          <li
                            v-for="(item, index) in scope.row.log"
                            :key="index"
                          >
                            <div class="log_detail">
                              <div
                                class="log_detail_footer"
                                v-html="item.content"
                              ></div>
                            </div>
                          </li>
                        </ul>
                      </template>
                    </el-table-column>
                  </template>
                  <template v-else>
                    <el-table-column
                      :prop="v.field"
                      :label="v.title"
                      :key="i"
                      v-if="v.istrue"
                      :min-width="v.width"
                      :fixed="v.fixed"
                      :sortable="v.field === 'beyondMarkType'"
                    >
                      <template slot="header">
                        <el-tooltip
                          effect="dark"
                          placement="top"
                          v-if="v.field === 'beyondMarkType'"
                        >
                          <div slot="content">
                            超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                          </div>
                          <span>超期标识</span>
                        </el-tooltip>
                        <span v-else>{{ v.title }}</span>
                      </template>
                      <template slot-scope="scope">
                        <template v-if="v.field === 'beyondMarkType'">
                          <RadioStatusBtn
                            :isClass="true"
                            :type="scope.row[v.field]"
                          ></RadioStatusBtn>
                        </template>
                        <span v-else-if="v.title === '数据类型'">{{
                          scope.row[v.field] | transAutoCreate
                        }}</span>
                        <span v-else-if="v.title === '上会状态'">{{
                          scope.row[v.field] | transTrue2False
                        }}</span>
                        <span v-else-if="v.title === '任务创建时间'">{{
                          scope.row[v.field] | formatTimer
                        }}</span>
                        <div
                          class="recordsUl"
                          v-html="scope.row[v.field]"
                          v-else-if="v.title === '上会原因历史记录'"
                        ></div>
                        <span
                          v-else-if="v.title === '反馈ID'"
                          @click="tofeedBack(scope.row.feedBackId)"
                          class="link-type"
                          >{{ scope.row[v.field] }}</span
                        >
                        <span v-else>{{ scope.row[v.field] }}</span>
                      </template>
                    </el-table-column>
                  </template>
                </template>
              </el-table>
            </el-form>
          </div>
        </div>

        <!-- V1反馈table 开始 -->
        <!-- :span-method="concatSpan" -->

        <!-- V2反馈table 开始 -->
        <!-- :span-method="concatSpan2" -->
      </el-card>
      <!-- <el-card class="BottomDetailTable" v-show="pannelName === 'V1' || pannelName === 'V2'">

      </el-card> -->

      <el-card class="meetingRecordTable" v-show="pannelName === 'third'">
        <el-row class="tabsName">
          <el-radio-group v-model="recordType" @change="handlerecordTypeClick">
            <el-radio-button label="1">反馈</el-radio-button>
            <el-radio-button label="2">任务</el-radio-button>
          </el-radio-group>
        </el-row>
        <el-form
          :inline="true"
          v-model="versionThreeForm"
          ref="versionThreeFormRef"
        >
          <el-row
            type="flex"
            class="row-bg"
            justify="end"
            style="flex-wrap: wrap"
          >
            <el-form-item label="" style="margin-left:75px;" prop="productId">
              <el-select
                v-model="versionThreeForm.productId"
                multiple
                placeholder="请选择所属产品"
                filterable
                clearable
                collapse-tags
              >
                <el-option value="" label="全部产品"></el-option>
                <el-option
                  v-for="(item, index) in userProduct"
                  :key="index"
                  :label="item.name"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="">
              <el-select
                v-model="versionThreeForm.autoCreate"
                placeholder="请选数据类型"
                filterable
                clearable
                class="selectType"
                style="width: 100%"
              >
                <el-option label="全部数据类型" value=""></el-option>
                <el-option label="自动拉取" :value="true"></el-option>
                <el-option label="手动上会" :value="false"></el-option>
              </el-select>
            </el-form-item>

            <el-form-item label="" v-if="recordType === '2'" prop="taskNumber">
              <el-input
                clearable
                v-model="versionThreeForm.taskNumber"
                placeholder="输入任务ID搜索"
              ></el-input>
            </el-form-item>
            <el-form-item
              label=""
              v-if="recordType === '1'"
              prop="feedbackNumber"
            >
              <el-input
                clearable
                v-model="versionThreeForm.feedbackNumber"
                placeholder="输入反馈ID搜索"
              ></el-input>
            </el-form-item>
            <el-form-item label="" v-if="recordType === '2'" v-has="'M1111051'">
              <el-button type="primary" size="small" @click="searchV3Table"
                >搜索</el-button
              >
            </el-form-item>
            <el-form-item label="" v-if="recordType === '1'" v-has="'M1111048'">
              <el-button type="primary" size="small" @click="searchV3Table"
                >搜索</el-button
              >
            </el-form-item>
            <el-form-item label="">
              <el-button type="primary" size="small" @click="resetV3Table"
                >重置</el-button
              >
            </el-form-item>
          </el-row>
          <el-row
            type="flex"
            class="row-bg"
            justify="end"
            style="flex-wrap: wrap"
          >
            <!-- <template v-if="!editV3State && recordType === '2'">
              <el-form-item label="">
                <el-button
                  type="danger"
                  v-has="'M1111029'"
                  size="small"
                  @click="close_select_v3"
                  >关闭</el-button
                >
              </el-form-item>
            </template> -->

            <template v-if="!editV3State && recordType === '1'">
              <el-form-item label="">
                <el-button
                  type="primary"
                  v-has="'M1111025'"
                  size="small"
                  @click="createChild"
                  >创建/查看子任务</el-button
                >
              </el-form-item>
            </template>
            <template v-if="!editV3State">
              <el-form-item label="">
                <el-button
                  type="danger"
                  v-has="'M1111027'"
                  size="small"
                  @click="click_delete_v3"
                  >批量删除</el-button
                >
              </el-form-item>
            </template>

            <el-form-item label="" key="444" v-if="editV3State">
              <el-button
                type="primary"
                size="small"
                @click="calcleEdit('V3Fed')"
                >取消编辑</el-button
              >
            </el-form-item>
            <template v-if="!editV3State && recordType === '2'">
              <el-form-item label="">
                <el-button
                  type="primary"
                  v-has="'M1111041'"
                  size="small"
                  @click="editV3Table"
                  >编辑</el-button
                >
              </el-form-item>
            </template>
            <template v-if="!editV3State && recordType === '1'">
              <el-form-item label="">
                <el-button
                  type="primary"
                  v-has="'M1111026'"
                  size="small"
                  @click="editV3Table"
                  >编辑</el-button
                >
              </el-form-item>
            </template>

            <el-form-item label="" v-if="recordType === '2'" v-has="'M1111051'">
              <el-button type="success" size="small" @click="saveV3Table"
                >保存</el-button
              >
            </el-form-item>
            <el-form-item label="" v-if="recordType === '1'" v-has="'M1111049'">
              <el-button type="success" size="small" @click="saveV3Table"
                >保存</el-button
              >
            </el-form-item>
            <el-form-item label="" v-if="recordType === '1'" v-has="'M1111024'">
              <el-button @click="addMasterUser" type="primary" size="small"
                >新增反馈</el-button
              >
            </el-form-item>
            <el-form-item label="" v-if="recordType === '2'" v-has="'M1111028'">
              <el-button @click="addTasks" type="primary" size="small"
                >新增任务</el-button
              >
            </el-form-item>
            <el-form-item label="" v-show="recordType === '1'">
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group
                  v-model="colOptions"
                  :min="3"
                  class="checkGroup"
                >
                  <el-checkbox
                    v-for="item in colSelect"
                    :label="item"
                    :key="item"
                    class="checkItem"
                  ></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small"
                  >字段管理</el-button
                >
              </el-popover>
            </el-form-item>
            <el-form-item label="" v-show="recordType === '2'">
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group v-model="taskOpt" :min="3">
                  <el-checkbox
                    v-for="item in taskSlet"
                    :label="item"
                    :key="item"
                    class="checkItem"
                  ></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small"
                  >字段管理</el-button
                >
              </el-popover>
            </el-form-item>
          </el-row>

          <!-- <el-form-item label=""  v-show="!editV3State&&recordType === '1'">
            <el-button type="primary" size="small" @click="pushTaskFed">推送</el-button>
          </el-form-item> -->
        </el-form>

        <!-- V3反馈table  -->
        <!-- :span-method="objectSpanMethod" -->
        <div v-show="recordType === '1'">
          <el-form
            :model="recordTableData"
            :rules="recordTableDataRules"
            ref="recordTableDataform"
          >
            <el-table
              ref="multipleTable"
              v-loading="recordTableDataLoading"
              :data="recordTableData.data"
              tooltip-effect="dark"
              max-height="500"
              @selection-change="handleV3SelectionChange"
              row-key="id"
              :cell-style="{ textAlign: 'center', height: '60px' }"
              :header-cell-style="{
                textAlign: 'center',
                height: '50px',
                backgroundColor: '#FFFFFF',
              }"
              border
              style="width: 100%"
            >
              <el-table-column type="selection" width="55"> </el-table-column>
              <template v-for="(v, i) in recordTableData.columns">
                <template v-if="v.title == '本周会议讨论内容'">
                  <el-table-column
                    prop="thisWeekMeetingDiscussionContent"
                    v-if="v.istrue"
                    label="本周会议讨论内容"
                    width="300"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.thisWeekMeetingDiscussionContent }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="
                            'data.' +
                              scope.$index +
                              '.thisWeekMeetingDiscussionContent'
                          "
                          :rules="
                            recordTableDataRules.thisWeekMeetingDiscussionContent
                          "
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 2, maxRows: 6 }"
                            resize="none"
                            size="mini"
                            placeholder="请输入本周会议讨论内容"
                            v-model="scope.row.thisWeekMeetingDiscussionContent"
                          ></el-input>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '下一步措施'">
                  <el-table-column
                    prop="nextPlan"
                    v-if="v.istrue"
                    label="下一步措施"
                    width="300"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.nextPlan }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.nextPlan'"
                          :rules="recordTableDataRules.nextPlan"
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 2, maxRows: 6 }"
                            resize="none"
                            size="mini"
                            placeholder="请输入下一步措施"
                            v-model="scope.row.nextPlan"
                          ></el-input>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '是否继续上会'">
                  <el-table-column
                    v-if="v.istrue"
                    prop="continueMeeting"
                    label="是否继续上会"
                    width="300"
                    :key="v.field"
                  >
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.continueMeetingTag }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.continueMeeting'"
                          :rules="recordTableDataRules.continueMeeting"
                        >
                          <el-radio-group v-model="scope.row.continueMeeting">
                            <el-radio :label="true">继续上会</el-radio>
                            <el-radio :label="false">转线下跟进</el-radio>
                          </el-radio-group>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '主负责人'">
                  <el-table-column
                    prop="masterId"
                    label="主负责人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.masterUser }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.masterId'"
                          :rules="recordTableDataRules.masterId"
                        >
                          <el-select
                            v-model="scope.row.masterId"
                            @change="changeV3TableMaster($event, scope.row)"
                            filterable
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in scope.row.masterlst"
                              :key="ind"
                              :label="items.displayName"
                              :value="items.id"
                            ></el-option>
                          </el-select>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '其他负责人'">
                  <el-table-column
                    prop="otherPrincipaluserIdList"
                    label="其他负责人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.otherPrincipaluserName }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="
                            'data.' + scope.$index + '.otherPrincipaluserIdList'
                          "
                          :rules="recordTableDataRules.otherPrincipaluserIdList"
                        >
                          <easySelect
                            :max="10"
                            @change="changeOthers2($event, scope.row)"
                            :value="scope.row.otherPrincipaluserIdList"
                            :options="allUserList"
                          />
                          <!-- <el-select
                            v-model="scope.row.otherPrincipaluserIdList"
                            @change="changeV3TableOtherList($event, scope.row)"
                            filterable
                            multiple
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in allUserList"
                              :key="ind"
                              :label="items.name"
                              :value="items.id"
                            ></el-option>
                          </el-select> -->
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '申请人'">
                  <el-table-column
                    prop="v1ApplicantId"
                    label="申请人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.v1ApplicantName }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.v1ApplicantId'"
                          :rules="recordTableDataRules.v1ApplicantId"
                        >
                          <el-select
                            v-model="scope.row.v1ApplicantId"
                            @change="changeV3TableAppkicant($event, scope.row)"
                            filterable
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in scope.row.applicantlst"
                              :key="ind"
                              :label="items.displayName"
                              :value="items.id"
                            ></el-option>
                          </el-select>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '会议议程'">
                  <el-table-column
                    prop="agendaStart"
                    label="会议议程"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      {{`${scope.row.agendaStart?scope.row.agendaStart:""}`+' - '+`${scope.row.agendaEnd?scope.row.agendaEnd:" "}`}}
                    </template>
                  </el-table-column>
                </template>

                <template v-else>
                  <el-table-column
                    :prop="v.field"
                    :label="v.title"
                    :key="i"
                    v-if="v.istrue"
                    :min-width="v.width"
                    :fixed="v.fixed"
                    :sortable="v.field === 'feedBackBeyondMarkType'"
                  >
                    <template slot="header">
                      <el-tooltip
                        effect="dark"
                        placement="top"
                        v-if="v.field === 'feedBackBeyondMarkType'"
                      >
                        <div slot="content">
                          超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                        </div>
                        <span>超期标识</span>
                      </el-tooltip>
                      <span v-else>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="v.field === 'feedBackBeyondMarkType'">
                        <RadioStatusBtn
                          :isClass="true"
                          :type="scope.row[v.field]"
                        ></RadioStatusBtn>
                      </template>

                      <span
                        v-else-if="v.title === '反馈ID'"
                        @click="tofeedBack(scope.row.feedBackId)"
                        class="link-type"
                        >{{ scope.row.feedBackNumber }}</span
                      >
                      <span
                        v-else-if="v.title === '任务ID'"
                        @click="totaskDetail(scope.row.taskNumber)"
                        class="link-type"
                        >{{
                          scope.row.taskNumber === 0
                            ? ' '
                            : scope.row.taskNumber
                        }}</span
                      >
                      <div
                        class="recordsUl"
                        v-html="scope.row[v.field]"
                        v-else-if="v.title === '上会原因历史记录'"
                      ></div>
                      <span v-else-if="v.title === '数据类型'">{{
                        scope.row[v.field] | transAutoCreate
                      }}</span>
                      <span v-else-if="v.title === '上会状态'">{{
                        scope.row[v.field] | transTrue2False
                      }}</span>
                      <span v-else-if="v.title === '创建时间'">
                        <span>{{
                          scope.row.feedBackCreateAt | formatTimer
                        }}</span>
                      </span>
                      <span v-else-if="v.title === '反馈关闭时间'">
                        <span>{{ scope.row.feedBackCloseDate }}</span>
                      </span>

                      <span v-else-if="v.title === '版本是否发布'">
                        {{ scope.row[v.field] | transTrue2False2 }}</span
                      >
                      <span v-else>{{ scope.row[v.field] }}</span>
                    </template>
                  </el-table-column>
                </template>
              </template>

              <!-- <el-table-column label="操作" width="200" fixed="right">
                    <template slot-scope="scope">
                        <el-link :underline="false" v-if="!scope.row.isSet" v-has="'M1111025'">
                        <el-tooltip content="任务" placement="top" effect="light">
                            <span @click="checkOutRow(scope.row, '1')" class="option_task"></span>
                        </el-tooltip>
                        </el-link>
                        <el-link :underline="false" v-has="'M1111026'">
                        <el-tooltip :content="scope.row.isSet ? '保存' : '编辑'" placement="top" effect="light">
                            <span
                            @click="tableInputChange(scope.row, scope.$index, true)"
                            :class="scope.row.isSet ? 'option_confirm' : 'option_update'"
                            ></span>
                        </el-tooltip>
                        </el-link>
                        <el-link :underline="false" v-if="!scope.row.isSet" v-has="'M1111027'">
                        <el-tooltip content="删除" placement="top" effect="light">
                            <span @click="tableRowDelete(scope.row, scope.$index, true)" class="option_delete"></span>
                        </el-tooltip>
                        </el-link>
                        <el-link :underline="false" v-else>
                        <el-tooltip content="取消" placement="top" effect="light">
                            <span @click="tableInputChange(scope.row, scope.$index, false)" class="option_close"></span>
                        </el-tooltip>
                        </el-link>
                    </template>
                    </el-table-column> -->
            </el-table>
          </el-form>
        </div>
        <!-- V3任务table -->
        <!-- :span-method="objectTaskConbine" -->
        <div v-show="recordType === '2'">
          <el-form
            :model="gridTaskData"
            :rules="gridTaskDataRules"
            ref="gridTaskDataform"
          >
            <el-table
              style="width: 100%"
              border
              max-height="500"
              ref="gridTaskDataTable"
              @selection-change="handleV3tskChange"
              row-key="id"
              v-loading="recordTableDataLoading"
              :cell-style="{ textAlign: 'center', height: '60px' }"
              :header-cell-style="{
                textAlign: 'center',
                height: '50px',
                backgroundColor: '#FFFFFF',
              }"
              :data="gridTaskData.data"
            >
              <!-- <el-table-column
                property="continueMeeting"
                v-if="gridTaskData.columns[0].istrue"
                label="上会状态"
                min-width="100"
                >
                <template slot-scope="scope">
                    <span>{{ scope.row.continueMeeting | transTrue2False }}</span>
                </template>
                </el-table-column> -->
              <el-table-column type="selection" width="55"> </el-table-column>
              <template v-for="(v, i) in gridTaskData.columns">
                <template v-if="v.title == '本周会议讨论内容'">
                  <el-table-column
                    prop="thisWeekMeetingDiscussionContent"
                    v-if="v.istrue"
                    label="本周会议讨论内容"
                    width="300"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.thisWeekMeetingDiscussionContent }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="
                            'data.' +
                              scope.$index +
                              '.thisWeekMeetingDiscussionContent'
                          "
                          :rules="
                            gridTaskDataRules.thisWeekMeetingDiscussionContent
                          "
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 2, maxRows: 6 }"
                            resize="none"
                            size="mini"
                            placeholder="请输入本周会议讨论内容"
                            v-model="scope.row.thisWeekMeetingDiscussionContent"
                          ></el-input>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == 'C1/C2'">
                  <el-table-column
                    v-if="v.istrue"
                    prop="taskCtag"
                    label="C1/C2"
                    width="300"
                    :key="v.field"
                  >
                    <template slot-scope="scope">
                      <template>
                        <span>{{ scope.row.taskCtag | tagsFilter }}</span>
                      </template>
                      <!-- <template v-else>
                        <el-form-item :prop="'data.' + scope.$index + '.taskCtag'" :rules="gridTaskDataRules.taskCtag">
                          <el-select v-model="scope.row.taskCtag">
                            <el-option label="C1" :value="0"></el-option>
                            <el-option label="C2" :value="1"></el-option>
                          </el-select>
                        </el-form-item>
                      </template> -->
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '主题'">
                  <el-table-column
                    prop="taskTitle"
                    v-if="v.istrue"
                    label="主题"
                    width="300"
                    :key="v.field"
                  >
                    <!-- <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template> -->
                    <template slot-scope="scope">
                      {{ scope.row.taskTitle }}
                      <!-- <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.taskTitle'"
                          :rules="gridTaskDataRules.taskTitle"
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 6, maxRows: 20 }"
                            placeholder="请输入主题"
                            v-model="scope.row.taskTitle"
                          >
                          </el-input>
                        </el-form-item>
                      </template> -->
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '下一步措施'">
                  <el-table-column
                    prop="nextPlan"
                    v-if="v.istrue"
                    label="下一步措施"
                    width="300"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.nextPlan }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.nextPlan'"
                          :rules="gridTaskDataRules.nextPlan"
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 2, maxRows: 6 }"
                            resize="none"
                            size="mini"
                            placeholder="请输入下一步措施"
                            v-model="scope.row.nextPlan"
                          ></el-input>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '当前进展'">
                  <el-table-column
                    prop="currentProgress"
                    v-if="v.istrue"
                    label="当前进展"
                    width="300"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.currentProgress }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.currentProgress'"
                          :rules="gridTaskDataRules.currentProgress"
                        >
                          <el-input
                            type="textarea"
                            :autosize="{ minRows: 2, maxRows: 6 }"
                            resize="none"
                            size="mini"
                            placeholder="请输入当前进展"
                            v-model="scope.row.currentProgress"
                          ></el-input>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '是否继续上会'">
                  <el-table-column
                    v-if="v.istrue"
                    prop="continueMeeting"
                    label="是否继续上会"
                    width="300"
                    :key="v.field"
                  >
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.continueMeetingTag }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.continueMeeting'"
                          :rules="gridTaskDataRules.continueMeeting"
                        >
                          <el-radio-group v-model="scope.row.continueMeeting">
                            <el-radio :label="true">继续上会</el-radio>
                            <el-radio :label="false">转线下跟进</el-radio>
                          </el-radio-group>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '主负责人'">
                  <el-table-column
                    prop="masterId"
                    label="主负责人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.masterUser }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.masterId'"
                          :rules="gridTaskDataRules.masterId"
                        >
                          <el-select
                            v-model="scope.row.masterId"
                            @change="changeV3TableMaster($event, scope.row)"
                            filterable
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in scope.row.masterlst"
                              :key="ind"
                              :label="items.displayName"
                              :value="items.id"
                            ></el-option>
                          </el-select>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '其他负责人'">
                  <el-table-column
                    prop="otherPrincipaluserIdList"
                    label="其他负责人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.otherPrincipaluserName }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="
                            'data.' + scope.$index + '.otherPrincipaluserIdList'
                          "
                          :rules="gridTaskDataRules.otherPrincipaluserIdList"
                        >
                          <easySelect
                            :max="10"
                            @change="changeOthers2($event, scope.row)"
                            :value="scope.row.otherPrincipaluserIdList"
                            :options="allUserList"
                          />
                          <!-- <el-select
                            v-model="scope.row.otherPrincipaluserIdList"
                            @change="changeV3TableOtherList($event, scope.row)"
                            filterable
                            multiple
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in allUserList"
                              :key="ind"
                              :label="items.name"
                              :value="items.id"
                            ></el-option>
                          </el-select> -->
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '责任人'">
                  <el-table-column
                    prop="taskResponsibleUserId"
                    label="责任人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template>
                        {{ scope.row.taskResponsibleUserName }}
                      </template>
                      <!-- <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.taskResponsibleUserId'"
                          :rules="gridTaskDataRules.taskResponsibleUserId"
                        >
                          <el-select
                            v-model="scope.row.taskResponsibleUserId"
                            @change="changeV3ResponsList($event, scope.row)"
                            filterable
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="items in scope.row.userList"
                              :key="items.id"
                              :label="items.userName"
                              :value="items.id"
                            ></el-option>
                          </el-select>
                        </el-form-item>
                      </template> -->
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '申请人'">
                  <el-table-column
                    prop="v1ApplicantId"
                    label="申请人"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="scope.row.action == 'view'">
                        {{ scope.row.v1ApplicantName }}
                      </template>
                      <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.v1ApplicantId'"
                          :rules="gridTaskDataRules.v1ApplicantId"
                        >
                          <el-select
                            v-model="scope.row.v1ApplicantId"
                            @change="changeV3TableAppkicant($event, scope.row)"
                            filterable
                            clearable
                            style="width: 100%"
                          >
                            <el-option
                              v-for="(items, ind) in scope.row.applicantlst"
                              :key="ind"
                              :label="items.displayName"
                              :value="items.id"
                            ></el-option>
                          </el-select>
                        </el-form-item>
                      </template>
                    </template>
                  </el-table-column>
                </template>
                 <template v-else-if="v.title == '会议议程'">
                  <el-table-column
                    prop="agendaStart"
                    label="会议议程"
                    min-width="220"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">
                      <i class="cell-required"></i>
                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      {{`${scope.row.agendaStart?scope.row.agendaStart:""}`+' - '+`${scope.row.agendaEnd?scope.row.agendaEnd:" "}`}}
                    </template>
                  </el-table-column>
                </template>
                <template v-else-if="v.title == '计划完成时间'">
                  <el-table-column
                    prop="taskExpectedCompletedDate"
                    label="计划完成时间"
                    min-width="230"
                    v-if="v.istrue"
                    :key="v.field"
                  >
                    <template slot="header">

                      <span>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template>
                        {{ scope.row.taskExpectedCompletedDate | formatTimer }}
                      </template>
                      <!-- <template v-else>
                        <el-form-item
                          :prop="'data.' + scope.$index + '.taskExpectedCompletedDate'"
                          :rules="gridTaskDataRules.taskExpectedCompletedDate"
                        >
                          <el-date-picker
                            v-model="scope.row.taskExpectedCompletedDate"
                            :picker-options="pickerOptions"
                            type="date"
                            value-format="yyyy-MM-dd"
                            placeholder="选择日期时间"
                          >
                          </el-date-picker>
                        </el-form-item>
                      </template> -->
                    </template>
                  </el-table-column>
                </template>
                <template v-else>
                  <el-table-column
                    :prop="v.field"
                    :label="v.title"
                    :key="i"
                    v-if="v.istrue"
                    :min-width="v.width"
                    :fixed="v.fixed"
                    :sortable="v.field === 'taskBeyondMarkType'"
                  >
                    <template slot="header">
                      <el-tooltip
                        effect="dark"
                        placement="top"
                        v-if="v.field === 'feedBackBeyondMarkType'"
                      >
                        <div slot="content">
                          超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                        </div>
                        <span>超期标识</span>
                      </el-tooltip>
                      <span v-else>{{ v.title }}</span>
                    </template>
                    <template slot-scope="scope">
                      <template v-if="v.field === 'taskBeyondMarkType'">
                        <RadioStatusBtn
                          :isClass="true"
                          :type="scope.row[v.field]"
                        ></RadioStatusBtn>
                      </template>
                      <span
                        v-else-if="v.title === '反馈ID'"
                        @click="tofeedBack(scope.row.feedBackId)"
                        class="link-type"
                        >{{ scope.row.feedBackNumber }}</span
                      >
                      <span v-else-if="v.title === '数据类型'"
                        >{{ scope.row.autoCreate | transAutoCreate }}
                      </span>
                      <span
                        v-else-if="v.title === '任务ID'"
                        @click="totaskDetail(scope.row.taskNumber)"
                        class="link-type"
                        >{{ scope.row.taskNumber }}
                      </span>
                      <div
                        class="recordsUl"
                        v-html="scope.row[v.field]"
                        v-else-if="v.title === '上会原因历史记录'"
                      ></div>
                      <span v-else>{{ scope.row[v.field] }}</span>
                    </template>
                  </el-table-column>
                </template>
              </template>
            </el-table>
          </el-form>
        </div>
      </el-card>
      <el-card class="meetingRecordTable" v-show="pannelName === 'fourth'">
        <el-row class="tabsName">
          <el-radio-group v-model="fourthType" @change="fourthTypeClick">
            <el-radio-button label="1">反馈</el-radio-button>
            <el-radio-button label="2">任务</el-radio-button>
          </el-radio-group>
        </el-row>
        <el-form
          :inline="true"
          v-model="versionFourForm"
          ref="versionFourFormRef"
        >
          <el-row
            type="flex"
            class="row-bg"
            justify="end"
            style="flex-wrap: wrap"
          >
            <!-- <template v-if="!editV4State && fourthType === '2'">
              <el-form-item label="">
                <el-button
                  type="danger"
                  v-has="'M1111039'"
                  size="small"
                  @click="close_select_v4"
                  >关闭</el-button
                >
              </el-form-item>
            </template> -->
            <template v-if="!editV4State && fourthType === '1'">
              <el-form-item label="">
                <el-button
                  type="primary"
                  v-has="'M1111032'"
                  size="small"
                  @click="pushTaskFed"
                  >推送</el-button
                >
              </el-form-item>
            </template>
            <template v-if="!editV4State && fourthType === '2'">
              <el-form-item label="">
                <el-button
                  v-has="'M1111037'"
                  type="primary"
                  size="small"
                  @click="pushTaskFed2"
                  >推送</el-button
                >
              </el-form-item>
            </template>

            <!-- <el-form-item label="" v-show="!editV4State && fourthType === '1'">
            <el-button type="primary" size="small" @click="lookTableV4"
              >查看子任务</el-button
            >
          </el-form-item> -->
            <template v-if="!editV4State && fourthType === '1'">
              <el-form-item label="">
                <el-button
                  v-has="'M1111033'"
                  type="primary"
                  size="small"
                  @click="createChildV4"
                  >创建/查看子任务</el-button
                >
              </el-form-item>
            </template>
            <template v-if="!editV4State">
              <el-form-item label="">
                <el-button
                  type="danger"
                  v-has="'M1111035'"
                  size="small"
                  @click="click_delete_v4"
                  >批量删除</el-button
                >
              </el-form-item>
            </template>

            <el-form-item label="" key="111" v-show="editV4State">
              <el-button
                type="primary"
                size="small"
                @click="calcleEdit('V4Fed')"
                >取消编辑</el-button
              >
            </el-form-item>
            <template v-if="!editV4State && fourthType === '1'">
              <el-form-item label="">
                <el-button
                  type="primary"
                  v-has="'M1111034'"
                  size="small"
                  @click="editV4Table"
                  >编辑</el-button
                >
              </el-form-item>
            </template>
            <template v-if="!editV4State && fourthType === '2'">
              <el-form-item label="">
                <el-button
                  v-has="'M1111038'"
                  type="primary"
                  size="small"
                  @click="editV4Table"
                  >编辑</el-button
                >
              </el-form-item>
            </template>

            <el-form-item
              label=""
              v-show="fourthType === '1'"
              v-has="'M1111052'"
            >
              <el-button type="success" size="small" @click="saveV4Table"
                >保存</el-button
              >
            </el-form-item>
            <el-form-item
              label=""
              v-show="fourthType === '2'"
              v-has="'M1111053'"
            >
              <el-button type="success" size="small" @click="saveV4Table"
                >保存</el-button
              >
            </el-form-item>
            <el-form-item
              label=""
              v-show="fourthType === '2'"
              v-has="'M1111036'"
            >
              <el-button type="primary" @click="addTasks" size="small"
                >新增任务</el-button
              >
            </el-form-item>
            <el-form-item
              label=""
              v-show="fourthType === '1'"
              v-has="'M1111031'"
            >
              <el-button @click="addMasterUser" type="primary" size="small"
                >新增反馈</el-button
              >
            </el-form-item>
            <el-form-item label="" v-show="fourthType === '1'">
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group
                  v-model="v3_fed_colopt"
                  :min="3"
                  class="checkGroup2"
                >
                  <el-checkbox
                    v-for="item in v3_fed_select"
                    :label="item"
                    :key="item"
                    class="checkItem"
                  ></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small"
                  >字段管理</el-button
                >
              </el-popover>
            </el-form-item>
            <el-form-item label="" v-show="fourthType === '2'">
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group v-model="v3_task_colopt" :min="3">
                  <el-checkbox
                    v-for="item in v3_task_select"
                    :label="item"
                    :key="item"
                    class="checkItem"
                  ></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small"
                  >字段管理</el-button
                >
              </el-popover>
            </el-form-item>
          </el-row>

          <!-- <el-form-item label="" >
            <el-button type="primary" size="small" @click="resetV4Table">重置</el-button>
          </el-form-item>
          <el-form-item label="" >
            <el-button type="primary" size="small" @click="searchV4Table">搜索</el-button>
          </el-form-item> -->
        </el-form>
        <!-- V4反馈table -->
        <!-- :span-method="objectseriousConbine" -->
        <el-form
          :model="seriousTableData"
          :rules="seriousTableDatarules"
          ref="seriousTableDataform"
          v-show="fourthType === '1'"
        >
          <el-table
            ref="seriousTable"
            tooltip-effect="dark"
            max-height="660"
            :cell-style="{ textAlign: 'center', height: '60px' }"
            :header-cell-style="{
              textAlign: 'center',
              height: '50px',
              backgroundColor: '#FFFFFF',
            }"
            @selection-change="handleV4tskChange"
            row-key="id"
            :data="seriousTableData.data"
            v-loading="seriousTableDataLoading"
            border
            style="width: 100%"
            highlight-current-row
          >
            <el-table-column type="selection" width="55"> </el-table-column>
            <template v-for="(v, i) in seriousTableData.columns">
              <template v-if="v.title == '本周会议讨论内容'">
                <el-table-column
                  prop="thisWeekMeetingDiscussionContent"
                  v-if="v.istrue"
                  label="本周会议讨论内容"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.thisWeekMeetingDiscussionContent }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="
                          'data.' +
                            scope.$index +
                            '.thisWeekMeetingDiscussionContent'
                        "
                        :rules="
                          seriousTableDatarules.thisWeekMeetingDiscussionContent
                        "
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入本周会议讨论内容"
                          v-model="scope.row.thisWeekMeetingDiscussionContent"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '下一步措施'">
                <el-table-column
                  prop="nextPlan"
                  v-if="v.istrue"
                  label="下一步措施"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.nextPlan }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.nextPlan'"
                        :rules="seriousTableDatarules.nextPlan"
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入下一步措施"
                          v-model="scope.row.nextPlan"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '是否继续上会'">
                <el-table-column
                  v-if="v.istrue"
                  prop="continueMeeting"
                  label="是否继续上会"
                  width="300"
                  :key="v.field"
                >
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.continueMeetingTag }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.continueMeeting'"
                        :rules="seriousTableDatarules.continueMeeting"
                      >
                        <el-radio-group v-model="scope.row.continueMeeting">
                          <el-radio :label="true">继续上会</el-radio>
                          <el-radio :label="false">转线下跟进</el-radio>
                        </el-radio-group>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '主负责人'">
                <el-table-column
                  prop="masterId"
                  label="主负责人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">
                    <i class="cell-required"></i>
                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.masterUser }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.masterId'"
                        :rules="seriousTableDatarules.masterId"
                      >
                        <el-select
                          v-model="scope.row.masterId"
                          @change="changeV3TableMaster($event, scope.row)"
                          filterable
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in scope.row.masterlst"
                            :key="ind"
                            :label="items.displayName"
                            :value="items.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '其他负责人'">
                <el-table-column
                  prop="otherPrincipaluserIdList"
                  label="其他负责人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">
                    <i class="cell-required"></i>
                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.otherPrincipalUserName }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="
                          'data.' + scope.$index + '.otherPrincipaluserIdList'
                        "
                        :rules="seriousTableDatarules.otherPrincipaluserIdList"
                      >
                        <easySelect
                          :max="10"
                          @change="changeOthers2($event, scope.row)"
                          :value="scope.row.otherPrincipaluserIdList"
                          :options="allUserList"
                        />
                        <!-- <el-select
                          v-model="scope.row.otherPrincipaluserIdList"
                          @change="changeV3TableOtherList($event, scope.row)"
                          filterable
                          multiple
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in allUserList"
                            :key="ind"
                            :label="items.name"
                            :value="items.id"
                          ></el-option>
                        </el-select> -->
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '申请人'">
                <el-table-column
                  prop="v1ApplicantId"
                  label="申请人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">
                    <i class="cell-required"></i>
                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.v1ApplicantName }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.v1ApplicantId'"
                        :rules="seriousTableDatarules.v1ApplicantId"
                      >
                        <el-select
                          v-model="scope.row.v1ApplicantId"
                          @change="changeV3TableAppkicant($event, scope.row)"
                          filterable
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in scope.row.applicantlst"
                            :key="ind"
                            :label="items.displayName"
                            :value="items.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '当前进展'">
                <el-table-column
                  prop="currentProgress"
                  v-if="v.istrue"
                  label="当前进展"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.currentProgress }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.currentProgress'"
                        :rules="seriousTableDatarules.currentProgress"
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入当前进展"
                          v-model="scope.row.currentProgress"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else>
                <el-table-column
                  :prop="v.field"
                  :label="v.title"
                  :key="i"
                  v-if="v.istrue"
                  :fixed="v.fixed"
                  :sortable="v.field === 'feedBackBeyondMarkType'"
                  :min-width="v.width"
                >
                  <template slot="header">
                    <el-tooltip
                      effect="dark"
                      placement="top"
                      v-if="v.field === 'feedBackBeyondMarkType'"
                    >
                      <div slot="content">
                        超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                      </div>
                      <span>超期标识</span>
                    </el-tooltip>
                    <span v-else>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="v.field === 'feedBackBeyondMarkType'">
                      <RadioStatusBtn
                        :isClass="true"
                        :type="scope.row[v.field]"
                      ></RadioStatusBtn>
                    </template>
                    <span
                      v-else-if="v.title === '反馈ID'"
                      @click="tofeedBack(scope.row.feedBackId)"
                      class="link-type"
                      >{{ scope.row.feedBackNumber }}</span
                    >
                    <span
                      v-else-if="v.title === '任务ID'"
                      @click="totaskDetail(scope.row.taskNumber)"
                      class="link-type"
                      >{{
                        scope.row.taskNumber === 0 ? ' ' : scope.row.taskNumber
                      }}</span
                    >
                    <div
                      class="recordsUl"
                      v-html="scope.row[v.field]"
                      v-else-if="v.title === '上会原因历史记录'"
                    ></div>
                    <span v-else-if="v.title === '数据类型'">{{
                      scope.row[v.field] | transAutoCreate
                    }}</span>
                    <span v-else-if="v.title === '上会状态'">{{
                      scope.row[v.field] | transTrue2False
                    }}</span>
                    <span v-else-if="v.title === '版本是否发布'">
                      {{ scope.row[v.field] | transTrue2False2 }}</span
                    >
                    <span v-else-if="v.title === '创建时间'">
                      <span>{{
                        scope.row.feedBackCreateAt | formatTimer
                      }}</span>
                    </span>
                    <span v-else>{{ scope.row[v.field] }}</span>
                  </template>
                </el-table-column>
              </template>
            </template>
          </el-table>
        </el-form>
        <!-- V4任务table -->
        <el-form
          :model="seriousTaskData"
          :rules="seriousTaskDatarules"
          ref="seriousTaskDataform"
          v-show="fourthType === '2'"
        >
          <el-table
            :data="seriousTaskData.data"
            tooltip-effect="dark"
            ref="seriousTask"
            @selection-change="handleV4SelectionChange"
            row-key="id"
            v-loading="seriousTableDataLoading"
            max-height="660"
            :cell-style="{ textAlign: 'center', height: '60px' }"
            :header-cell-style="{
              textAlign: 'center',
              height: '50px',
              backgroundColor: '#FFFFFF',
            }"
            border
            style="width: 100%"
            highlight-current-row
          >
            <el-table-column type="selection" width="55"> </el-table-column>
            <template v-for="(v, i) in seriousTaskData.columns">
              <template v-if="v.title == '本周会议讨论内容'">
                <el-table-column
                  prop="thisWeekMeetingDiscussionContent"
                  v-if="v.istrue"
                  label="本周会议讨论内容"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.thisWeekMeetingDiscussionContent }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="
                          'data.' +
                            scope.$index +
                            '.thisWeekMeetingDiscussionContent'
                        "
                        :rules="
                          seriousTaskDatarules.thisWeekMeetingDiscussionContent
                        "
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入本周会议讨论内容"
                          v-model="scope.row.thisWeekMeetingDiscussionContent"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == 'C1/C2'">
                <el-table-column
                  v-if="v.istrue"
                  prop="taskCtag"
                  label="C1/C2"
                  width="300"
                  :key="v.field"
                >
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      <span>{{ scope.row.taskCtag | tagsFilter }}</span>
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.taskCtag'"
                        :rules="seriousTaskDatarules.taskCtag"
                      >
                        <el-select v-model="scope.row.taskCtag">
                          <el-option label="C1" :value="0"></el-option>
                          <el-option label="C2" :value="1"></el-option>
                        </el-select>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '主题'">
                <el-table-column
                  prop="taskTitle"
                  v-if="v.istrue"
                  label="主题"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.taskTitle }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.taskTitle'"
                        :rules="seriousTaskDatarules.taskTitle"
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          placeholder="请输入主题"
                          v-model="scope.row.taskTitle"
                        >
                        </el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '下一步措施'">
                <el-table-column
                  prop="nextPlan"
                  v-if="v.istrue"
                  label="下一步措施"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.nextPlan }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.nextPlan'"
                        :rules="seriousTaskDatarules.nextPlan"
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入下一步措施"
                          v-model="scope.row.nextPlan"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '当前进展'">
                <el-table-column
                  prop="currentProgress"
                  v-if="v.istrue"
                  label="当前进展"
                  width="300"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.currentProgress }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.currentProgress'"
                        :rules="seriousTaskDatarules.currentProgress"
                      >
                        <el-input
                          type="textarea"
                          :autosize="{ minRows: 2, maxRows: 6 }"
                          resize="none"
                          size="mini"
                          placeholder="请输入当前进展"
                          v-model="scope.row.currentProgress"
                        ></el-input>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '是否继续上会'">
                <el-table-column
                  v-if="v.istrue"
                  prop="continueMeeting"
                  label="是否继续上会"
                  width="300"
                  :key="v.field"
                >
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.continueMeetingTag }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.continueMeeting'"
                        :rules="seriousTaskDatarules.continueMeeting"
                      >
                        <el-radio-group v-model="scope.row.continueMeeting">
                          <el-radio :label="true">继续上会</el-radio>
                          <el-radio :label="false">转线下跟进</el-radio>
                        </el-radio-group>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '主负责人'">
                <el-table-column
                  prop="masterId"
                  label="主负责人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.masterUser }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.masterId'"
                        :rules="seriousTaskDatarules.masterId"
                      >
                        <el-select
                          v-model="scope.row.masterId"
                          @change="changeV3TableMaster($event, scope.row)"
                          filterable
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in scope.row.masterlst"
                            :key="ind"
                            :label="items.displayName"
                            :value="items.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '其他负责人'">
                <el-table-column
                  prop="otherPrincipaluserIdList"
                  label="其他负责人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.otherPrincipalUserName }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="
                          'data.' + scope.$index + '.otherPrincipaluserIdList'
                        "
                        :rules="seriousTaskDatarules.otherPrincipaluserIdList"
                      >
                        <easySelect
                          :max="10"
                          @change="changeOthers2($event, scope.row)"
                          :value="scope.row.otherPrincipaluserIdList"
                          :options="allUserList"
                        />
                        <!-- <el-select
                          v-model="scope.row.otherPrincipaluserIdList"
                          @change="changeV3TableOtherList($event, scope.row)"
                          filterable
                          multiple
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in allUserList"
                            :key="ind"
                            :label="items.name"
                            :value="items.id"
                          ></el-option>
                        </el-select> -->
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '责任人'">
                <el-table-column
                  prop="taskResponsibleUserId"
                  label="责任人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template>
                      {{ scope.row.taskResponsibleUserName }}
                    </template>
                    <!-- <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.taskResponsibleUserId'"
                        :rules="seriousTaskDatarules.taskResponsibleUserId"
                      >
                        <el-select
                          v-model="scope.row.taskResponsibleUserId"
                          @change="changeV4ResponsList($event, scope.row)"
                          filterable
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="items in scope.row.userList"
                            :key="items.id"
                            :label="items.userName"
                            :value="items.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </template> -->
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '申请人'">
                <el-table-column
                  prop="v1ApplicantId"
                  label="申请人"
                  min-width="220"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="scope.row.action == 'view'">
                      {{ scope.row.v1ApplicantName }}
                    </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.v1ApplicantId'"
                        :rules="seriousTaskDatarules.v1ApplicantId"
                      >
                        <el-select
                          v-model="scope.row.v1ApplicantId"
                          @change="changeV3TableAppkicant($event, scope.row)"
                          filterable
                          clearable
                          style="width: 100%"
                        >
                          <el-option
                            v-for="(items, ind) in scope.row.applicantlst"
                            :key="ind"
                            :label="items.displayName"
                            :value="items.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </template>
                  </template>
                </el-table-column>
              </template>
              <template v-else-if="v.title == '计划完成时间'">
                <el-table-column
                  prop="taskExpectedCompletedDate"
                  label="计划完成时间"
                  min-width="230"
                  v-if="v.istrue"
                  :key="v.field"
                >
                  <template slot="header">

                    <span>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <!-- <template v-if="scope.row.action == 'view'"> -->
                    {{ scope.row.taskExpectedCompletedDate | formatTimer }}
                    <!-- </template>
                    <template v-else>
                      <el-form-item
                        :prop="'data.' + scope.$index + '.taskExpectedCompletedDate'"
                        :rules="seriousTaskDatarules.taskExpectedCompletedDate"
                      >
                        <el-date-picker
                          v-model="scope.row.taskExpectedCompletedDate"
                          :picker-options="pickerOptions"
                          type="date"
                          value-format="yyyy-MM-dd"
                          placeholder="选择日期时间"
                        >
                        </el-date-picker>
                      </el-form-item>
                    </template> -->
                  </template>
                </el-table-column>
              </template>
              <template v-else>
                <el-table-column
                  :prop="v.field"
                  :label="v.title"
                  :key="i"
                  v-if="v.istrue"
                  :min-width="v.width"
                  :fixed="v.fixed"
                  :sortable="v.field === 'taskBeyondMarkType'"
                >
                  <template slot="header">
                    <el-tooltip
                      effect="dark"
                      placement="top"
                      v-if="v.field === 'taskBeyondMarkType'"
                    >
                      <div slot="content">
                        超期标识注释:<br />绿色：未超期<br />蓝色：反馈普通超期<br />橙色：FEMS普通超期<br />红色：严重超期
                      </div>
                      <span>超期标识</span>
                    </el-tooltip>
                    <span v-else>{{ v.title }}</span>
                  </template>
                  <template slot-scope="scope">
                    <template v-if="v.field === 'taskBeyondMarkType'">
                      <RadioStatusBtn
                        :isClass="true"
                        :type="scope.row[v.field]"
                      ></RadioStatusBtn>
                    </template>
                    <span
                      v-else-if="v.title === '反馈ID'"
                      @click="tofeedBack(scope.row.feedBackId)"
                      class="link-type"
                      >{{ scope.row.feedBackNumber }}</span
                    >
                    <span v-else-if="v.title === '数据类型'"
                      >{{ scope.row.autoCreate | transAutoCreate }}
                    </span>
                    <span
                      v-else-if="v.title === '任务ID'"
                      @click="totaskDetail(scope.row.taskNumber)"
                      class="link-type"
                      >{{ scope.row.taskNumber }}
                    </span>
                    <div
                      class="recordsUl"
                      v-html="scope.row[v.field]"
                      v-else-if="v.title === '上会原因历史记录'"
                    ></div>
                    <span v-else>{{ scope.row[v.field] }}</span>
                  </template>
                </el-table-column>
              </template>
            </template>
          </el-table>
        </el-form>
      </el-card>
    </div>
  </div>
</template>
<script>
/* 引入通用的弹出框 */
import CommonDialog from '@/components/commonDialog/commonDialog.vue'
// 会议接口Api
import { DelateMetting } from '@/api/delateMeeting/server'
import { FeedBack } from '@/api/feedBack/server'
import Multiselect from 'vue-multiselect'
import socialUpload from '@/components/socialUpload/socialUpload.vue'
import { taskPandect } from '@/api/tasks/server'
import RadioStatusBtn from '@/components/radioStatusBtn/radioStatusBtn.vue'
import easySelect from '@/components/easySelect/index.vue'

// import popovers from '@/components/popovers/popovers'
import Sortable from 'sortablejs'
export default {
    name: 'mettingDetail',
    components: {
        CommonDialog,
        Multiselect,
        socialUpload,
        RadioStatusBtn,
        easySelect
    },
    props: {},
    computed: {
        getFilters() {
            return function(data) {
                const arrs = []
                data.forEach((element) => {
                    arrs.push({
                        text: element.feedBackNumber + '',
                        value: element.feedBackNumber
                    })
                })
                const resoule = this.deduplication(arrs)
                return resoule
            }
        },
        getProductNames() {
            return function(data) {
                const arrs = []
                data.forEach((element) => {
                    arrs.push({
                        text: element.productName,
                        value: element.productName
                    })
                })
                const resoule = this.deduplication(arrs)
                return resoule
            }
        },
        getTaskIds() {
            return function(data) {
                const arrs = []
                data.forEach((element) => {
                    arrs.push({
                        text: element.taskNumber + '',
                        value: element.taskNumber
                    })
                })
                const resoule = this.deduplication(arrs)
                return resoule
            }
        }
    },
    data() {
    // 反馈ID数字输入框校验规则
        var checkNumbers = (rule, value, callback) => {
            if (!value || value === '') {
                return callback(new Error('请输入反馈ID'))
            }
            setTimeout(() => {
                if (!Number.isInteger(value * 1)) {
                    callback(new Error('请输入数字值'))
                } else {
                    callback()
                }
            }, 1000)
        }
        // 任务ID数字输入框校验规则
        // var checkTaskNumbers = (rule, value, callback) => {
        //     if (!value) {
        //         return callback(new Error('请输入任务ID'))
        //     }
        //     setTimeout(() => {
        //         if (!Number.isInteger(value * 1)) {
        //             callback(new Error('请输入数字值'))
        //         } else {
        //             callback()
        //         }
        //     }, 1000)
        // }
        return {
            dataItems: [],
            token: {
                token: JSON.parse(sessionStorage.getItem('USERINFO')).token
            },
            fileList: [],
            fileUpload: `${process.env.VUE_APP_BASE_API}/api/OverTimeMeeting/V1/feedback/upload?meetingId=${this.$route.query.id}`,
            fileTskUpload: `${process.env.VUE_APP_BASE_API}/api/OverTimeMeeting/V1/task/upload?meetingId=${this.$route.query.id}`,
            fileUploadV2: `${process.env.VUE_APP_BASE_API}/api/OverTimeMeeting/V2/feedback/upload?meetingId=${this.$route.query.id}`,
            fileTskUploadV2: `${process.env.VUE_APP_BASE_API}/api/OverTimeMeeting/V2/task/upload?meetingId=${this.$route.query.id}`,
            v1ShowType: '1',
            multipleSelection: [],
            multipleSelectionV2: [],
            multipleSelectionV3: [],
            masterID: '',
            multipleSelectionV4: [],
            multipleFedlist4: [],
            multipleTsklist4: [],
            multipleTsk4: [],

            multiplev3list: [],
            multiplev4list: [],
            multipleFedlist: [],
            multipleTskV3: [],
            multipleTskV4: [],

            multipleTskSelection: [],
            multipleTskSelection2: [],
            multipleTskSelection3: [],
            multipleTskSelection4: [],

            editState: false,
            editV3State: false,
            editV4State: false,

            editTskState: false,
            editTskStateV3: false,
            editTskStateV4: false,

            searchConditionForm: {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreateFeedback: '',
                meetingFeedBackTaskIds: [],
                check: false
            },
            searchTaskForm: {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreateTask: '',
                meetingFeedBackTaskIds: [],
                check: false
            },
            versionThreeForm: {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreate: '',
                meetingFeedBackTaskIds: [],
                check: false
            },
            versionFourForm: {
                meetingId: this.$route.query.id,
                check: false
            },
            userProduct: [],
            sortable: null,
            sortable2: null,

            mettingFedId: '',
            mettingTaskId: '',
            mettingProductId: [''],
            fourthType: '1',
            couldClick: false,
            pickerOptions: {
                disabledDate(time) {
                    const _now = Date.now()
                    const seven = 24 * 60 * 60 * 1000
                    const sevenDays = _now - seven
                    return time.getTime() < sevenDays
                }
            },
            textMap: {
                update: 'Edit',
                create: 'Create'
            },

            dialogFormTemp: {
                // meetingRecordId: undefined,
                feedBackNumber: '',
                // productName: '',
                taskNumber: '',
                productName: '',
                title: ''
                // ctag: 'C2',
                // nextPlan: '',
                // title: '',
                // currentProgress: '',
                // responsibleUserId: '',
                // responsibleUserName: '',
                // otherPrincipalUserId: [],
                // expectedCompletedDate: '',
                // continueMeetingTag: true,
                // masterUser: '',
                // masterId: '',
                // severelyOverdue: false
            },
            dialogFormRules: {
                feedBackNumber: [
                    { required: true, message: '请输入反馈ID', trigger: 'change' }
                ],
                // productName: [{ required: false, message: '请输入产品名称', trigger: 'change' }],
                taskNumber: [
                    { required: true, message: '请选择任务ID', trigger: 'change' }
                ]
                // ctag: [{ required: true, message: '请选择任务标识', trigger: 'change' }],
                // nextPlan: [{ required: true, message: '请输入下一步计划', trigger: 'change' }],
                // title: [{ required: true, message: '请输入主题', trigger: 'change' }],
                // currentProgress: [{ required: false, message: '请输入当前进展', trigger: 'change' }],
                // responsibleUserId: [{ required: true, message: '请选择责任人', trigger: 'change' }],
                // responsibleUserName: [{ required: true, message: '请选择责任人', trigger: 'change' }],
                // otherPrincipaluserList: [{ required: true, message: '请选择其他负责人', trigger: 'change' }],
                // expectedCompletedDate: [{ required: true, message: '请选择计划完成时间', trigger: 'change' }],
                // continueMeetingTag: [{ required: false, message: '请选择是否继续上会', trigger: 'change' }],
                // otherPrincipalUserId: [{ required: true, message: '请选择其他负责人', trigger: 'change' }],
                // masterId: [{ required: true, message: '请选择主负责人', trigger: 'change' }]
            },
            dialogFormVisible: false,
            fullscreenLoading: false,
            // 关闭弹出框表单内容
            closeForm: {
                reason: '',
                remark: '',
                solution: ''
            },
            taskCommonId: '',
            closeFormRules: {
                reason: [
                    { required: true, message: '请输入关闭原因', trigger: 'change' }
                ],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }]
            },
            recordsName: 'V3',
            recordType: '1',
            needEditArr: [
                '当前进展',
                '本周会议讨论内容',
                '下一步措施',
                '主负责人',
                '其他负责人'
            ],

            noFeedBackReason: false,
            noTaskReason: false,
            editForm: {
                thisWeekMeetingDiscussionContent: ''
            },
            editFormRules: {
                thisWeekMeetingDiscussionContent: [
                    {
                        required: true,
                        message: '请输入本周会议讨论内容',
                        trigger: 'change'
                    }
                ]
            },
            options: [],
            toEmail: [],
            addMail: {},
            contacts: [],
            userInfo: {
                name: '',
                id: ''
            },
            productType: '1',
            createDialogTitle: '',
            createDialogVisible: false,
            createForm: {
                agenda: '',
                agendaEnd: '',
                agendaStart: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                remark: '', // 备注
                version: '',
                createUserName: '', // 创建人
                createUser: '',
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            },
            createType: '',
            createFormFormRules: {
                feedBackNumber: [
                    { required: true, validator: checkNumbers, trigger: 'blur' }
                ],
                createUserName: [
                    { required: false, message: '请输入创建人', trigger: 'blur' }
                ],
                createDay: [
                    { required: false, message: '请输入创建天数', trigger: 'blur' }
                ],
                discussionContent: [
                    { required: true, message: '请输本次会议讨论内容', trigger: 'blur' }
                ],
                continueMeetingTag: [
                    { required: false, message: '请输入是否继续上会', trigger: 'change' }
                ],
                currentEsponsibleUserName: [
                    { required: false, message: '请输入主负责人', trigger: 'blur' }
                ],
                masterId: [
                    { required: true, message: '请选择主负责人', trigger: 'blur' }
                ],
                otherPrincipalUserId: [
                    { required: true, message: '请选择其他负责人', trigger: 'blur' }
                ],
                applicantId: [
                    { required: true, message: '请选择申请人', trigger: 'blur' }
                ],
                productName: [
                    { required: false, message: '请输入所属产品', trigger: 'blur' }
                ],
                title: [{ required: false, message: '请输入标题', trigger: 'blur' }],
                applyer: [
                    { required: false, message: '请输入申请人', trigger: 'blur' }
                ],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }],
                reviseRecords: [
                    { required: true, message: '请输入V2信息修订记录', trigger: 'blur' }
                ]
            },
            taskMissionTitle: '',
            taskMissionVisible: false,
            taskMissionForm: {
                id: '',
                agenda: '',
                agendaEnd: '',
                masterId: '',
                agendaStart: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 创建人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: ''
            },
            taskMissionType: '',
            taskMissionFormRules: {
                taskNumber: [
                    { required: true, message: '任务ID不能为空' },
                    { type: 'number', message: '任务ID必须为数字值' }
                ],
                // feedBackNumber: [{ required: false, validator: checkNumbers, trigger: 'change' }],
                feedBackNumber: [
                    { required: false, message: '请输入反馈Id', trigger: 'blur' }
                ],
                createUserName: [
                    { required: false, message: '请输入创建人', trigger: 'blur' }
                ],
                createDay: [
                    { required: false, message: '请输入创建天数', trigger: 'blur' }
                ],
                discussionContent: [
                    { required: true, message: '请输本次会议讨论内容', trigger: 'blur' }
                ],
                continueMeetingTag: [
                    { required: false, message: '请输入是否继续上会', trigger: 'change' }
                ],
                currentEsponsibleUserName: [
                    { required: false, message: '请输入主负责人', trigger: 'blur' }
                ],
                masterId: [
                    { required: true, message: '请选择主负责人', trigger: 'blur' }
                ],
                otherPrincipalUserName: [
                    { required: true, message: '请选择其他负责人', trigger: 'change' }
                ],
                applicantId: [
                    { required: true, message: '请选择申请人', trigger: 'blur' }
                ],
                productName: [
                    { required: false, message: '请输入所属产品', trigger: 'blur' }
                ],
                title: [{ required: false, message: '请输入标题', trigger: 'blur' }],
                applyer: [
                    { required: false, message: '请输入申请人', trigger: 'blur' }
                ],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }],
                reviseRecords: [
                    { required: true, message: '请输入V2信息修订记录', trigger: 'blur' }
                ]
            },
            loading: false,

            dynamicTags: [],
            isEmpty: null,
            isEmpty2: null,
            dynamicTags2: [],
            inputValue2: '',
            inputVisible2: false,
            inputVisible: false,
            inputValue: '',
            pannelName: 'V1',

            // 表格数据---------------
            colOptions: [],
            taskOpt: [],
            taskSlet: [],
            colSelect: [],
            v1_top_colOptions: [],
            v1_top_colSelect: [],
            v1_bottom_colOptions: [],
            v1_bottom_colSelect: [],
            v2_top_colOptions: [],
            v2_top_colSelect: [],
            v2_bottom_colOptions: [],
            v2_bottom_colSelect: [],
            v3_fed_colopt: [],
            v3_fed_select: [],
            v3_task_colopt: [],
            v3_task_select: [],
            // v1超期反馈
            overDueFeedBackData1: {
                data: [],
                sel: null,
                columns: [
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 100,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'beyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeetingTag',
                    //     width: 100,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },

                    {
                        title: '所属产品',
                        field: 'productName',
                        width: 180,
                        istrue: true,
                        filters: [],
                        filtersMethod: []
                    },
                    {
                        title: '反馈类型',
                        field: 'feedBackType',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '是否服务请求',
                        field: 'serverRequestTagString',
                        width: 120,
                        istrue: true
                    },
                    { title: '标题', field: 'title', width: 180, istrue: true },
                    {
                        title: '创建人',
                        field: 'createUserName',
                        width: 120,
                        istrue: true
                    },
                    { title: '创建天数', field: 'createDay', width: 100, istrue: true },
                    { title: '创建时间', field: 'releaseTime', width: 180, istrue: true },

                    {
                        title: '上会原因',
                        field: 'discussionContent',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeetingTagString',
                        width: 130,
                        istrue: true
                    },
                    { title: '主负责人', field: 'master', width: 100, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipalUserName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'applicantName',
                        width: 120,
                        istrue: true
                    },
                    { title: '备注', field: 'remark', width: 100, istrue: true },
                    { title: '修订记录', field: 'log', width: 100, istrue: true }
                ]
            },
            gridDatarules: {
                // sourceId  title nextPlan currentProgress responsibleUserId expectedCompletedDate  continueMeeting
                taskType: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择任务类型'
                    }
                ],
                title: [
                    {
                        required: true,
                        trigger: 'blur',
                        message: '请输入主题'
                    }
                ],
                nextPlan: [
                    {
                        required: true,
                        trigger: 'blur',
                        message: '请输入跟踪事项'
                    }
                ],
                currentProgress: [
                    {
                        required: true,
                        trigger: 'blur',
                        message: '请输入当前进展'
                    }
                ],
                responsibleUserId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择责任人'
                    }
                ],
                expectedCompletedDate: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择计划完成时间'
                    }
                ],
                sourceId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择源ID'
                    }
                ]
            },
            overDueFeedBackData1rules: {
                discussionContent: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请输入上会原因'
                    }
                ],
                continueMeetingTag: [
                    {
                        required: false
                    }
                ],
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipalUserId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                applicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            overDueFeedBackData2rules: {
                discussionContent: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请输入上会原因'
                    }
                ],
                continueMeetingTag: [
                    {
                        required: false
                    }
                ],
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipalUserId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                applicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            overDueFeedBackDataloading: false,
            overDuetaskloading: false,
            overDuetaskloading2: false,

            // v2超期反馈
            overDueFeedBackData2: {
                data: [],
                sel: null,
                columns: [
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 100,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'beyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeetingTag',
                    //     width: 100,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },

                    { title: '所属产品', field: 'productName', width: 180, istrue: true },
                    {
                        title: '反馈类型',
                        field: 'feedBackType',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '是否服务请求',
                        field: 'serverRequestTagString',
                        width: 120,
                        istrue: true
                    },
                    { title: '标题', field: 'title', width: 180, istrue: true },
                    {
                        title: '创建人',
                        field: 'createUserName',
                        width: 120,
                        istrue: true
                    },
                    { title: '创建天数', field: 'createDay', width: 100, istrue: true },
                    { title: '创建时间', field: 'releaseTime', width: 180, istrue: true },
                    {
                        title: '本周会议讨论内容',
                        field: 'discussionContent',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeetingTagString',
                        width: 130,
                        istrue: true
                    },
                    { title: '主负责人', field: 'master', width: 100, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipalUserName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'applicantName',
                        width: 120,
                        istrue: true
                    },
                    { title: '会议议程', field: 'agenda', width: 100, istrue: true },
                    { title: '备注', field: 'remark', width: 100, istrue: true },
                    { title: '修订记录', field: 'log', width: 100, istrue: true }
                ]
            },
            // v1反馈任务
            feedbackTaskData1: {
                data: [],
                sel: null,
                columns: [
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 100,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'beyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeetingTag',
                    //     width: 100,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },

                    { title: '所属产品', field: 'productName', width: 180, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 100, istrue: true },
                    { title: '任务标题', field: 'title', width: 180, istrue: true },
                    {
                        title: '任务创建人',
                        field: 'createUserName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '任务创建天数',
                        field: 'createDay',
                        width: 150,
                        istrue: true
                    },
                    {
                        title: '任务创建时间',
                        field: 'taskCreatedAt',
                        width: 150,
                        istrue: true
                    },
                    {
                        title: '上会原因',
                        field: 'discussionContent',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeetingTagString',
                        width: 130,
                        istrue: true
                    },
                    // { title: '是否服务请求', field: 'serverRequestTag', width: 120, istrue: true },
                    { title: '主负责人', field: 'master', width: 120, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipalUserName',
                        width: 100,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'applicantName',
                        width: 120,
                        istrue: true
                    },
                    { title: '备注', field: 'remark', width: 100, istrue: true },
                    { title: '修订记录', field: 'log', width: 100, istrue: true }
                ]
            },
            feedbackTaskData1rules: {
                discussionContent: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请输入上会原因'
                    }
                ],
                continueMeetingTag: [
                    {
                        required: false
                    }
                ],
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipalUserId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                applicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            feedbackTaskData2rules: {
                discussionContent: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请输入上会原因'
                    }
                ],
                continueMeetingTag: [
                    {
                        required: false
                    }
                ],
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipalUserId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                applicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            feedbackTaskDataloading: false,
            // v2反馈任务
            feedbackTaskData2: {
                data: [],
                sel: null,
                columns: [
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeetingTag',
                    //     width: 100,
                    //     istrue: true
                    // },

                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 100,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'beyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },
                    { title: '所属产品', field: 'productName', width: 180, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 100, istrue: true },
                    { title: '任务标题', field: 'title', width: 180, istrue: true },
                    {
                        title: '任务创建人',
                        field: 'createUserName',
                        width: 100,
                        istrue: true
                    },
                    {
                        title: '任务创建天数',
                        field: 'createDay',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '任务创建时间',
                        field: 'taskCreatedAt',
                        width: 150,
                        istrue: true
                    },
                    {
                        title: '本周会议讨论内容',
                        field: 'discussionContent',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeetingTagString',
                        width: 130,
                        istrue: true
                    },
                    // { title: '是否服务请求', field: 'serverRequestTag', width: 120, istrue: true },
                    { title: '主负责人', field: 'master', width: 100, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipalUserName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'applicantName',
                        width: 120,
                        istrue: true
                    },
                    { title: '会议议程', field: 'agenda', width: 100, istrue: true },
                    { title: '备注', field: 'remark', width: 100, istrue: true },
                    { title: '修订记录', field: 'log', width: 100, istrue: true }
                ]
            },
            recordTableDataLoading: false,
            seriousTableDataLoading: false,
            // 会议记录
            recordTableData: {
                sel: null, // 选中行
                columns: [
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeeting',
                    //     width: 100,
                    //     istrue: true
                    // },
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 80,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'feedBackBeyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    { title: '所属产品', field: 'productName', width: 200, istrue: true },
                    { title: '标题', field: 'title', width: 200, istrue: true },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },
                    {
                        title: '创建时间',
                        field: 'feedBackCreateAt',
                        width: 200,
                        istrue: true
                    },
                    { title: '创建天数', field: 'createDay', width: 200, istrue: true },
                    {
                        title: '反馈类型',
                        field: 'feedBackType',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '创建人',
                        field: 'feedBackCreateUser',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '本周会议讨论内容',
                        field: 'thisWeekMeetingDiscussionContent',
                        width: 250,
                        istrue: true
                    },
                    { title: '下一步措施', field: 'nextPlan', width: 250, istrue: true },
                    {
                        title: '是否继续上会',
                        field: 'continueMeeting',
                        width: 200,
                        istrue: true
                    },
                    { title: '主负责人', field: 'masterId', width: 250, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipaluserIdList',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'v1ApplicantName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '会议议程',
                        field: 'agendaStart',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '历史会议措施',
                        field: 'historyMeasure',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '历史会议讨论内容',
                        field: 'historyMeetingDiscussionContent',
                        width: 300,
                        istrue: true
                    },
                    {
                        title: '历史主负责人',
                        field: 'histoyMaster',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '由谁处理',
                        field: 'dealWithUser',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '处理时间',
                        field: 'dealWithDate',
                        width: 200,
                        istrue: false
                    },
                    { title: '反馈状态', field: 'status', width: 80, istrue: true },
                    {
                        title: '反馈处理阶段',
                        field: 'feedBackStage',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '是否服务请求',
                        field: 'serverRequestTag',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '反馈关闭原因',
                        field: 'feedBackCloseReason',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '反馈关闭时间',
                        field: 'feedBackCloseDate',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '反馈关闭人',
                        field: 'feedBackCloseUser',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '任务关闭人',
                        field: 'taskCloseUser',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '反馈激活人',
                        field: 'feedBackActiveUser',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '任务激活人',
                        field: 'taskActiveUser',
                        width: 200,
                        istrue: true
                    },
                    { title: 'BUG ID(转)', field: 'bugId', width: 200, istrue: false },
                    {
                        title: 'BUG状态(转)',
                        field: 'bugStatus',
                        width: 200,
                        istrue: false
                    },
                    { title: 'BUG类型(转)', field: 'bugType', width: 200, istrue: false },
                    {
                        title: 'BUG严重程度(转)',
                        field: 'bugDegree',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: 'BUG优先级(转)',
                        field: 'bugLevel',
                        width: 200,
                        istrue: false
                    },
                    // { title: '历史下一步措施', field: 'historyNextPlan', width: 200, istrue: false },
                    // { title: '当前进展', field: 'currentProgress', width: 250, istrue: true },
                    // { title: '计划解决版本(转)', field: 'plannedSolutionVersion', width: 120, istrue: false },
                    {
                        title: 'BUG ID(绑)',
                        field: 'bindBugId',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: 'BUG状态(绑)',
                        field: 'bindBugStatus',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: 'BUG类型(绑)',
                        field: 'bindBugType',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: 'BUG严重程度(绑)',
                        field: 'bindBugDegree',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: 'BUG优先级(绑)',
                        field: 'bindBugLevel',
                        width: 200,
                        istrue: false
                    },
                    // { title: '计划解决版本(绑)', field: 'bindPlannedSolutionVersion', width: 120, istrue: false },
                    {
                        title: '原始需求ID(转)',
                        field: 'originalDemandId',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '原始需求状态(转)',
                        field: 'originalDemandStatus',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '原始需求ID(绑)',
                        field: 'bindOriginalDemandId',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '原始需求状态(绑)',
                        field: 'bindOriginalDemandStatus',
                        width: 200,
                        istrue: false
                    },
                    // { title: '原始需求版本(转)', field: 'originalDemandPlanVersion', width: 200, istrue: false },
                    // { title: '计划发布版本(转)', field: 'originalPlannedReleaseVersion', width: 120, istrue: false },
                    // { title: '产品需求ID(转)', field: 'productDemandId', width: 200, istrue: false },
                    // { title: '产品需求状态(转)', field: 'productDemandStatus', width: 200, istrue: false },
                    {
                        title: '产品需求ID(绑)',
                        field: 'bindProductDemandId',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '产品需求状态(绑)',
                        field: 'bindProductDemandStatus',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '产品需求版本(绑)',
                        field: 'bindProductDemandPlanVersion',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '市场需求 ID（绑）',
                        field: 'bindMarketDemandId',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '市场需求状态（绑）',
                        field: 'bindMarketDemandStatus',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '版本是否发布',
                        field: 'storyPublishTag',
                        width: 200,
                        istrue: false
                    }
                ],
                data: []
            },
            recordTableDataRules: {
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipaluserIdList: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                v1ApplicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            gridTaskDataRules: {
                taskTitle: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请填写标题'
                    }
                ],
                nextPlan: [
                    {
                        required: false,
                        trigger: 'change',
                        message: '请填写下一步措施'
                    }
                ],
                taskExpectedCompletedDate: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择计划完成时间'
                    }
                ],
                taskResponsibleUserId: [
                    {
                        required: false,
                        trigger: 'change',
                        message: '请选择责任人'
                    }
                ],
                masterId: [
                    {
                        required: false,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipaluserIdList: [
                    {
                        required: false,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                v1ApplicantId: [
                    {
                        required: false,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            gridTaskData: {
                data: [],
                sel: null,
                columns: [
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 100,
                        istrue: true,
                        fixed: 'left'
                    },
                    {
                        title: '超期标识',
                        field: 'taskBeyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeetingTag',
                    //     width: 100,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },

                    { title: '所属产品', field: 'productName', width: 180, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 120, istrue: true },
                    { title: 'C1/C2', field: 'taskCtag', width: 120, istrue: true },
                    { title: '主题', field: 'taskTitle', width: 120, istrue: true },
                    { title: '下一步措施', field: 'nextPlan', width: 100, istrue: true },
                    {
                        title: '当前进展',
                        field: 'currentProgress',
                        width: 100,
                        istrue: true
                    },
                    {
                        title: '责任人',
                        field: 'taskResponsibleUserId',
                        width: 100,
                        istrue: true
                    },
                    // { title: '历史会议讨论内容', field: 'historyMeetingDiscussionContent', width: 300, istrue: true },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '计划完成时间',
                        field: 'taskExpectedCompletedDate',
                        width: 100,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeeting',
                        width: 130,
                        istrue: true
                    },
                    // { title: '是否服务请求', field: 'serverRequestTag', width: 120, istrue: true },
                    { title: '主负责人', field: 'masterId', width: 100, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipaluserIdList',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'v1ApplicantName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '会议议程',
                        field: 'agendaStart',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '任务类型',
                        field: 'taskType',
                        width: 120,
                        istrue: true
                    }
                ]
            },
            seriousTableDatarules: {
                masterId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipaluserIdList: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择其他负责人'
                    }
                ],
                v1ApplicantId: [
                    {
                        required: true,
                        trigger: 'change',
                        message: '请选择申请人'
                    }
                ]
            },
            seriousTableData: {
                sel: null, // 选中行
                columns: [
                    {
                        title: '超期标识',
                        field: 'feedBackBeyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeeting',
                    //     width: 100,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 100, istrue: true },
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 80,
                        istrue: true,
                        fixed: 'left'
                    },
                    { title: '所属产品', field: 'productName', width: 200, istrue: true },
                    { title: '标题', field: 'title', width: 200, istrue: true },
                    {
                        title: '创建人',
                        field: 'feedBackCreateUser',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '创建时间',
                        field: 'feedBackCreateAt',
                        width: 200,
                        istrue: true
                    },
                    { title: '创建天数', field: 'createDay', width: 200, istrue: true },
                    {
                        title: '当前进展',
                        field: 'currentProgress',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '本周会议讨论内容',
                        field: 'thisWeekMeetingDiscussionContent',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '上会原因历史记录',
                        field: 'reason',
                        width: 250,
                        istrue: true
                    },
                    { title: '下一步措施', field: 'nextPlan', width: 250, istrue: true },
                    {
                        title: '是否继续上会',
                        field: 'continueMeeting',
                        width: 200,
                        istrue: true
                    },
                    {
                        title: '是否服务请求',
                        field: 'serverRequestTag',
                        width: 120,
                        istrue: true
                    },
                    { title: '主负责人', field: 'masterId', width: 250, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipaluserIdList',
                        width: 250,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'v1ApplicantName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '由谁处理',
                        field: 'dealWithUser',
                        width: 200,
                        istrue: false
                    },
                    {
                        title: '处理时间',
                        field: 'dealWithDate',
                        width: 200,
                        istrue: false
                    },
                    { title: '反馈状态', field: 'status', width: 80, istrue: true }
                ],
                data: []
            },
            seriousTaskData: {
                sel: null, // 选中行
                columns: [
                    {
                        title: '超期标识',
                        field: 'taskBeyondMarkType',
                        width: 120,
                        istrue: true
                    },
                    // {
                    //     title: '上会状态',
                    //     field: 'continueMeeting',
                    //     width: 110,
                    //     istrue: true
                    // },
                    { title: '数据类型', field: 'autoCreate', width: 110, istrue: true },
                    {
                        title: '反馈ID',
                        field: 'feedBackNumber',
                        width: 110,
                        istrue: true,
                        fixed: 'left'
                    },
                    { title: '所属产品', field: 'productName', width: 180, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 110, istrue: true },
                    { title: '下一步措施', field: 'nextPlan', width: 180, istrue: true },
                    {
                        title: '当前进展',
                        field: 'currentProgress',
                        width: 180,
                        istrue: true
                    },
                    {
                        title: '责任人',
                        field: 'taskResponsibleUserName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '计划完成时间',
                        field: 'taskExpectedCompletedDate',
                        width: 180,
                        istrue: true
                    },
                    {
                        title: '是否继续上会',
                        field: 'continueMeeting',
                        width: 150,
                        istrue: true
                    },
                    // { title: '是否服务请求', field: 'serverRequestTag', width: 120, istrue: true },
                    { title: '主负责人', field: 'masterId', width: 150, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipaluserIdList',
                        width: 180,
                        istrue: true
                    },
                    {
                        title: '申请人',
                        field: 'v1ApplicantName',
                        width: 120,
                        istrue: true
                    },
                    {
                        title: '任务类型',
                        field: 'taskType',
                        width: 120,
                        istrue: true
                    }
                ],
                data: []
            },
            seriousTaskDatarules: {
                taskTitle: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请填写标题'
                    }
                ],
                nextPlan: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请填写下一步措施'
                    }
                ],
                taskExpectedCompletedDate: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请选择计划完成时间'
                    }
                ],
                taskResponsibleUserId: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请选择责任人'
                    }
                ],
                masterId: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请选择主负责人'
                    }
                ],
                otherPrincipaluserIdList: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请选择其他负责人'
                    }
                ],
                v1ApplicantId: [
                    {
                        required: false,
                        trigger: 'blur',
                        message: '请选择申请人'
                    }
                ]
            },

            // 弹出框-----------------
            deleteDialogVisible: false,
            modelTitle: '',
            modelType: '',

            feedBackDialogVisible: false,
            startTime: '',
            endTime: '',
            startTime2: '',
            endTime2: '',

            taskList: [],

            versionTitle: '',
            versionFormVisible: false,
            versionForm: {
                appendixsName: '', // 附件名称
                title: '', // 主题
                content: '',
                copyRecipients: [],
                recipientUser: [],
                receiver: '', // 收件人
                recipients: '', // 抄送人
                discussionContent: '', // 发布内容
                addtion: '' // 附加
            },
            versionFormRules: {
                title: [{ required: true, message: '请输入主题', trigger: 'change' }]
            },
            recordsForm: {
                feedBackNumber: '',
                productName: '',
                title: ''
            },
            recordsFormRules: {
                feedBackNumber: [
                    { required: true, validator: checkNumbers, trigger: 'blur' }
                ]
            },
            settingss: '',
            recordsFormVisible: false,
            rowObj: {},
            seriousDelateVisible: false,
            seriousForm: {},
            seriousFormRules: {},

            setting: {
                branding: false,
                menubar: false,
                toolbar:
          'undo redo  | formatselect alignleft aligncenter alignright alignjustify  numlist bullist  | fontselect fontsizeselect forecolor backcolor | bold italic underline strikethrough | indent outdent | superscript subscript | removeformat |',
                toolbar_drawer: 'sliding',
                quickbars_selection_toolbar:
          'removeformat | bold italic underline strikethrough | fontsizeselect forecolor backcolor',
                plugins: 'link image  table lists fullscreen',
                language: 'zh_CN',
                init_instance_callback: (editor) => {
                    if (this.content) {
                        editor.setContent(this.content)
                    }
                    this.finishInit = true
                    editor.on('NodeChange Change SetContent KeyUp', () => {
                        this.hasChanged = true
                    })
                }, // 上传图片
                convert_urls: false,
                automatic_uploads: true, // 开启点击图片上传时，自动进行远程上传操作
                images_upload_base_path: `${process.env.VUE_APP_GOLDWIND_BASE_API}`, // 图片上传的基本路径
                images_upload_url: '/v2/file/upload',
                images_upload_handler: (blobInfo, success, failure) => {
                    var xhr, formData

                    xhr = new XMLHttpRequest()
                    xhr.withCredentials = false
                    xhr.open(
                        'POST',
                        `${process.env.VUE_APP_GOLDWIND_BASE_API}` + '/v2/file/upload'
                    )
                    xhr.setRequestHeader(
                        'token',
                        JSON.parse(sessionStorage.getItem('USERINFO')).token
                    )
                    // xhr.setRequestHeader('token', JSON.parse(sessionStorage.getItem('USERINFO')).token);
                    formData = new FormData()
                    formData.append('file', blobInfo.blob())

                    formData.append('checkOfficeFmt', false)
                    formData.append('isTmp', false)
                    xhr.onload = function() {
                        var json

                        if (xhr.errcode === '0') {
                            failure('服务器错误:' + xhr.msg)
                            return
                        }
                        json = JSON.parse(this.responseText)
                        if (!json.data || typeof json.data.fileSourceId != 'string') {
                            failure('服务器错误')
                            return
                        }
                        success(
                            `${process.env.VUE_APP_GOLDWIND_BASE_API}` +
                '/v2/file/download?' +
                '&fileSourceId=' +
                json.data.fileSourceId
                        )
                    }
                    xhr.send(formData)
                },
                image_advtab: false,
                language_url: 'tinymce/langs/zh_CN.js', // 语言包的路径
                elementpath: false, // 隐藏元素路径，不明白的可以切换true/false观察页面
                statusbar: false,
                resize: false,
                height: 400
            },
            otherPrincipalList: [],
            productUserList: [],
            recrodsUserList: [],
            allUserList: [],
            allUser20: [],
            updateDialogShow: false,
            tskTypes: true,
            innerVisible: false,
            taskEditForm: {
                nextPlan: ''
            },
            taskEditFormRules: {
                nextPlan: [
                    { required: true, message: '填写下一步措施', trigger: 'change' }
                ]
            },
            gridData: {
                data: [],
                sel: null
            },

            cellEditDialogForm: {
                currentProgress: '',
                thisWeekMeetingDiscussionContent: '',
                nextPlan: '',
                masterUser: '',
                meetingId: '',
                otherPrincipalUserName: '',
                otherPrincipalUserId: [] // 其他负责人id
            },
            cellEditDialog: false,
            cellEditDialogType: '',
            cellEditDialogRules: {
                tArr: [
                    'currentProgress',
                    'thisWeekMeetingDiscussionContent',
                    'nextPlan',
                    'masterUser',
                    'otherPrincipalUserName'
                ],
                currentProgress: [
                    { required: true, message: '请填写当前进展', trigger: 'change' }
                ],
                thisWeekMeetingDiscussionContent: [
                    {
                        required: true,
                        message: '请填写本周会议讨论内容',
                        trigger: 'change'
                    }
                ],
                nextPlan: [
                    { required: true, message: '下一步措施', trigger: 'change' }
                ],
                masterUser: [
                    { required: true, message: '请选择主负责人', trigger: 'change' }
                ],
                otherPrincipalUserName: [
                    { required: true, message: '请选择其他负责人', trigger: 'change' }
                ]
            },
            rowData: {},
            meetingRecordRow: '',
            // 控制关闭弹出框的显示和隐藏
            closeDialogVisible: false,
            closeReasonList: []
        }
    },
    filters: {
        formatTimer: function(value) {
            if (!value) {
                return ''
            }
            var date = new Date(value)
            const y = date.getFullYear()
            let MM = date.getMonth() + 1
            MM = MM < 10 ? '0' + MM : MM
            let d = date.getDate()
            d = d < 10 ? '0' + d : d
            let h = date.getHours()
            h = h < 10 ? '0' + h : h
            let m = date.getMinutes()
            m = m < 10 ? '0' + m : m
            let s = date.getSeconds()
            s = s < 10 ? '0' + s : s
            return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s
        },
        transTrue2False: function(value) {
            if (value === true || value === 'true') {
                return '继续上会'
            } else if (value === false || value === 'false') {
                return '转线下跟进'
            } else {
                return value
            }
        },
        filterTaskType: function(value) {
            if (value === 0) {
                return '反馈'
            } else if (value === 1) {
                return 'BUG'
            } else {
                return '需求'
            }
        },
        transAutoCreate: function(value) {
            if (value) {
                return '自动拉取'
            } else {
                return '手动上会'
            }
        },
        transValue: function(value) {
            if (value === true) {
                return '是'
            } else if (value === false) {
                return '否'
            } else {
                return ''
            }
        },
        transTrue2False2: function(value) {
            if (value === true || value === 'true') {
                return '处理中'
            } else if (value === false || value === 'false') {
                return '未发布'
            } else {
                return value
            }
        },
        filterNull: function(params) {
            if (params === '' || params === null) {
                return '无'
            } else {
                return params
            }
        },
        handleArr2str(value) {
            if (value) {
                let result = ''
                value.forEach((element) => {
                    result = result + ' ' + element
                })
                return result
            }
            return ''
        },
        tagsFilter(v) {
            if (v === 0) {
                return 'C1'
            } else {
                return 'C2'
            }
        }
    },
    watch: {
    //  监听表格显示项
        colOptions(valArr) {
            const arr = this.colSelect.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.recordTableData.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem('recordTableOpt', JSON.stringify(this.colOptions))
            this.$nextTick(() => {
                this.$refs.multipleTable.doLayout()
            })
        },

        v1_top_colOptions(valArr) {
            const arr = this.v1_top_colSelect.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.overDueFeedBackData1.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'v1_top_colOptions',
                JSON.stringify(this.v1_top_colOptions)
            )
            this.$nextTick(() => {
                this.$refs.overDueFeedBackRef1.doLayout()
            })
        },
        v1_bottom_colOptions(valArr) {
            const arr = this.v1_bottom_colSelect.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.feedbackTaskData1.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'v1_bottom_colOptions',
                JSON.stringify(this.v1_bottom_colOptions)
            )
            this.$nextTick(() => {
                this.$refs.feedbackTaskDataRef1.doLayout()
            })
        },
        v2_top_colOptions(valArr) {
            const arr = this.v2_top_colSelect.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.overDueFeedBackData2.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'v2_top_colOptions',
                JSON.stringify(this.v2_top_colOptions)
            )
            this.$nextTick(() => {
                this.$refs.overDueFeedBackRef2.doLayout()
            })
        },
        v2_bottom_colOptions(valArr) {
            const arr = this.v2_bottom_colSelect.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.feedbackTaskData2.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'v2_bottom_colOptions',
                JSON.stringify(this.v2_bottom_colOptions)
            )
            this.$nextTick(() => {
                this.$refs.feedbackTaskDataRef2.doLayout()
            })
        },
        taskOpt(valArr) {
            const arr = this.taskSlet.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.gridTaskData.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem('gridTaskDataColunm', JSON.stringify(this.taskOpt))
            this.$nextTick(() => {
                this.$refs.gridTaskDataTable.doLayout()
            })
        },
        v3_fed_colopt(valArr) {
            const arr = this.v3_fed_select.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.seriousTableData.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'seriousTableDataColunm',
                JSON.stringify(this.v3_fed_colopt)
            )
            this.$nextTick(() => {
                this.$refs.seriousTable.doLayout()
            })
        },
        v3_task_colopt(valArr) {
            const arr = this.v3_task_select.filter((i) => valArr.indexOf(i) < 0) // 未选中
            this.seriousTaskData.columns.filter((i) => {
                i.istrue = arr.indexOf(i.title) === -1
            })
            localStorage.setItem(
                'seriousTaskDataColunm',
                JSON.stringify(this.v3_task_colopt)
            )
            this.$nextTick(() => {
                this.$refs.seriousTask.doLayout()
            })
        }
    },
    created() {
    //  创建表格显示项
        var _this = this
        for (let i = 0; i < _this.recordTableData.columns.length; i++) {
            _this.colSelect.push(_this.recordTableData.columns[i].title)
            if (_this.recordTableData.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.colOptions.push(_this.recordTableData.columns[i].title)
        }

        for (let i = 0; i < _this.overDueFeedBackData1.columns.length; i++) {
            _this.v1_top_colSelect.push(_this.overDueFeedBackData1.columns[i].title)
            if (_this.overDueFeedBackData1.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v1_top_colOptions.push(_this.overDueFeedBackData1.columns[i].title)
        }
        for (let i = 0; i < _this.feedbackTaskData1.columns.length; i++) {
            _this.v1_bottom_colSelect.push(_this.feedbackTaskData1.columns[i].title)
            if (_this.feedbackTaskData1.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v1_bottom_colOptions.push(_this.feedbackTaskData1.columns[i].title)
        }
        for (let i = 0; i < _this.overDueFeedBackData2.columns.length; i++) {
            _this.v2_top_colSelect.push(_this.overDueFeedBackData2.columns[i].title)
            if (_this.overDueFeedBackData2.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v2_top_colOptions.push(_this.overDueFeedBackData2.columns[i].title)
        }
        for (let i = 0; i < _this.feedbackTaskData2.columns.length; i++) {
            _this.v2_bottom_colSelect.push(_this.feedbackTaskData2.columns[i].title)
            if (_this.feedbackTaskData2.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v2_bottom_colOptions.push(_this.feedbackTaskData2.columns[i].title)
        }
        for (let i = 0; i < _this.gridTaskData.columns.length; i++) {
            _this.taskSlet.push(_this.gridTaskData.columns[i].title)
            if (_this.gridTaskData.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.taskOpt.push(_this.gridTaskData.columns[i].title)
        }
        for (let i = 0; i < _this.seriousTableData.columns.length; i++) {
            _this.v3_fed_select.push(_this.seriousTableData.columns[i].title)
            if (_this.seriousTableData.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v3_fed_colopt.push(_this.seriousTableData.columns[i].title)
        }
        for (let i = 0; i < _this.seriousTaskData.columns.length; i++) {
            _this.v3_task_select.push(_this.seriousTaskData.columns[i].title)
            if (_this.seriousTaskData.columns[i].istrue === false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v3_task_colopt.push(_this.seriousTaskData.columns[i].title)
        }
    },
    // beforeRouteEnter(to, from, next) {
    //     to.meta.keepAlive = from.path === '/Details'

    //     next()
    // },
    // activated() {
    // // 如果不是从详情页面返回，则重新加载数据
    //     if (!this.$route.meta.keepAlive) {
    //         // 加载页面数据
    //         this.getLocalOpt()
    //         this.getUserList()
    //           this.versionFedList()
    //             this.versionTskList()
    //         this.UserGetUserInfoAsync()
    //         this.getcloseReasonList()
    //     }
    //     this.$route.meta.keepAlive = true

    // // 从新设置页面得路由元信息
    // },
    mounted() {
    // this.readMasterUser();
        this.getLocalOpt()
        this.getUserList()
        this.getProductList()
        this.versionFedList()
        this.versionTskList()
        this.UserGetUserInfoAsync()
        this.getcloseReasonList()
    },
    methods: {
        maxPlus(max) {
            max++
        },

        changeOthers(v, row) {
            const nameList = []
            v.forEach((els) => {
                this.allUserList.forEach((el2) => {
                    if (els === el2.id) {
                        nameList.push(el2.displayName)
                    }
                })
            })
            row.otherPrincipalUserId = v
            row.otherPrincipalUserName = nameList
        },
        changeOthers2(v, row) {
            const nameList = []
            this.allUserList.forEach((element) => {
                v.forEach((els) => {
                    if (element.id === els) {
                        nameList.push(element.displayName)
                    }
                })
            })
            row.otherPrincipaluserIdList = v
            row.otherPrincipaluserNameList = nameList
        },

        filterList(v, row) {
            if (v !== '') {
                const list = this.allUserList.filter((item) => {
                    return item.name.indexOf(v) > -1
                })
                row.otherList = list
            } else {
                row.otherList = this.allUserList.slice(0, 10)
            }
        },
        remoteMethod(query) {
            if (query !== '') {
                setTimeout(() => {
                    this.dataItems = this.allUserList.filter((item) => {
                        return (
                            item.name
                                .toLowerCase() // 这里同样是匹配选项的value
                                .indexOf(query.toLowerCase()) > -1
                        )
                    })
                }, 200)
            } else {
                this.dataItems = []
            }
        },
        onFileSuccess(_response, _file, _fileList) {
            if (_response.success) {
                this.versionFedList()
                this.versionTskList()
                this.$message.success('上传成功')
            } else {
                this.fileList = []
                this.$message.error(_response.message || _response.desc || '上传失败')
            }
        },

        /**
     * @description: 文件上传失败事件
     */
        onFileError(_response) {
            this.$message.error('上传失败')
        },

        handleExceed(files, fileList) {
            this.$message.warning(
                `当前限制选择 3 个文件，本次选择了 ${
                    files.length
                } 个文件，共选择了 ${files.length + fileList.length} 个文件`
            )
        },
        beforeRemove(file, fileList) {
            return this.$confirm(`确定移除 ${file.name}？`)
        },
        async updateBatch(data) {
            try {
                const result = await DelateMetting.updateBatch({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.searchConditionForm.autoCreateFeedback,
                    feedbackProductIds: this.searchConditionForm.productId,
                    check: this.searchConditionForm.check,
                    taskNumber: this.searchConditionForm.taskNumber,
                    feedbackNumber: this.searchConditionForm.feedbackNumber,
                    meetingFeedBackTaskIds: this.searchConditionForm
                        .meetingFeedBackTaskIds,
                    feedbackInputDtos: data
                })
                if (result.success) {
                    this.$message.success('修改成功')
                    this.versionFedList()
                } else {
                    this.$message.error(result.message)
                    this.versionFedList()
                }
            } catch (err) {
                this.$message.error('服务器异常')
                this.versionFedList()
            }
        },
        async updateBatchTsk(data) {
            try {
                const result = await DelateMetting.updateBatchTsk({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateTask: this.searchTaskForm.autoCreateTask,
                    taskProductIds: this.searchTaskForm.productId,
                    check: this.searchTaskForm.check,
                    taskNumber: this.searchTaskForm.taskNumber,
                    feedbackNumber: this.searchTaskForm.feedbackNumber,
                    meetingFeedBackTaskIds: this.searchTaskForm.meetingFeedBackTaskIds,
                    taskInputDtos: data
                })
                if (result.success) {
                    this.$message.success('修改成功')
                    this.versionTskList()
                } else {
                    this.$message.error(result.message)
                    this.versionTskList()
                }
            } catch (err) {
                this.$message.error('服务器异常')
                this.versionTskList()
            }
        },

        changeTableMaster(v, row) {
            row.masterlst.forEach((element) => {
                if (element.id === v) {
                    row.master = element.displayName
                }
            })
        },
        changeV3TableMaster(v, row) {
            row.masterlst.forEach((element) => {
                if (element.id === v) {
                    row.masterUser = element.displayName
                }
            })
        },
        changeTableApplicant(v, row) {
            row.applicantlst.forEach((element) => {
                if (element.id === v) {
                    row.applicantName = element.displayName
                }
            })
        },
        changeV3TableAppkicant(v, row) {
            row.applicantlst.forEach((element) => {
                if (element.id === v) {
                    row.v1ApplicantName = element.displayName
                }
            })
        },
        changeTableOtherList(v, row) {
            const nameList = []
            this.allUserList.forEach((element) => {
                v.forEach((els) => {
                    if (element.id === els) {
                        nameList.push(element.displayName)
                    }
                })
            })
            row.otherPrincipalUserId = v
            row.otherPrincipalUserName = nameList
        },
        changeV3TableOtherList(v, row) {
            const nameList = []
            this.allUserList.forEach((element) => {
                v.forEach((els) => {
                    if (element.id === els) {
                        nameList.push(element.displayName)
                    }
                })
            })
            row.otherPrincipaluserIdList = v
            row.otherPrincipaluserNameList = nameList
        },
        changeV3ResponsList(v, row) {
            row.masterlst.forEach((element) => {
                if (element.id === v) {
                    row.taskResponsibleUserName = element.displayName
                }
            })
        },
        changeV4ResponsList(v, row) {
            row.masterlst.forEach((element) => {
                if (element.id === v) {
                    row.responsibleUserId = element.id
                    row.responsibleUserName = element.displayName
                }
            })
        },

        async deleteSelectionById(val, type) {
            try {
                const result = await DelateMetting.deleteSelectionById({
                    version: this.pannelName,
                    meetingFeedBackTaskIds: val
                })
                if (result.success) {
                    this.$message.success('删除成功')
                    if (type == 'fed') {
                        this.versionFedList()
                    } else {
                        this.versionTskList()
                    }
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                this.$message.error('服务器异常')
            }
        },
        handleSelectionChange(val) {
            this.multipleSelection = val.map((x) => {
                return x.id
            })
        },
        handleV2Change(val) {
            this.multipleSelectionV2 = val.map((x) => {
                return x.id
            })
        },
        handleV3SelectionChange(val) {
            this.multipleFedlist = val
            this.multipleSelectionV3 = val.map((x) => {
                return x.id
            })
        },
        handleV4SelectionChange(val) {
            this.multipleFedlist4 = val
            this.multipleSelectionV4 = val.map((x) => {
                return x.id
            })
        },
        handleV3tskChange(val) {
            this.multiplev3list = val
            this.multipleTskV3 = val.map((x) => {
                return x.id
            })
        },
        handleV4tskChange(val) {
            this.multipleTsklist4 = val
            this.multipleTsk4 = val.map((x) => {
                return x.id
            })
        },
        handleTskSelectionChange(val) {
            this.multipleTskSelection = val.map((x) => {
                return x.id
            })
        },
        handleTskSelectionChange2(val) {
            this.multipleTskSelection2 = val.map((x) => {
                return x.id
            })
        },
        saveV4Table() {
            const pannal = this.fourthType === '1'
            if (pannal) {
                if (this.seriousTableData.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                this.versionThreeForm.check = true
                this.$refs['seriousTableDataform'].validate((valid) => {
                    if (valid) {
                        this.upadteBtachFeedbackMeetingRecordOverdue()
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            } else {
                if (this.seriousTaskData.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                this.versionThreeForm.check = true
                this.$refs['seriousTaskDataform'].validate((valid) => {
                    if (valid) {
                        this.upadteBtachTaskMeetingRecordOverdue()
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            }
        },
        saveV3Table() {
            const pannal = this.recordType === '1'
            if (pannal) {
                if (this.recordTableData.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.versionThreeForm.productId != [''] &&
          this.versionThreeForm.autoCreate != '' &&
          this.versionThreeForm.feedbackNumber != undefined
                ) {
                    this.versionThreeForm.check = false
                }
                this.$refs['recordTableDataform'].validate((valid) => {
                    if (valid) {
                        this.updateMeetingRecordFeedBack()
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            } else {
                if (this.gridTaskData.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.versionThreeForm.productId != [''] &&
          this.versionThreeForm.autoCreate != '' &&
          this.versionThreeForm.feedbackNumber != undefined
                ) {
                    this.versionThreeForm.check = false
                }
                this.$refs['gridTaskDataform'].validate((valid) => {
                    if (valid) {
                        this.updateBtachTaskMeetingRecord()
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            }
        },
        validateTime(data, ids) {
            const arrs = data.map(ele => {
                return {
                    id: ele[ids],
                    start: ele.agendaStart ? ele.agendaStart.replace(':', '') * 1 : '',
                    end: ele.agendaEnd ? ele.agendaEnd.replace(':', '') * 1 : '',
                    allarr: data.map(x => {
                        return {
                            start: x.agendaStart ? x.agendaStart.replace(':', '') * 1 : '',
                            end: x.agendaEnd ? x.agendaEnd.replace(':', '') * 1 : '',
                            id: x[ids]
                        }
                    })
                }
            })
            let starFlag = true
            for (let i = 0; i < arrs.length; i++) {
                const fatherItem = arrs[i]
                for (let y = 0; y < fatherItem.allarr.length; y++) {
                    const childItem = fatherItem.allarr[y]
                    if (fatherItem.id === childItem.id) {
                        continue
                    }
                    if (fatherItem.start === childItem.start) {
                        starFlag = false
                    }
                    if (fatherItem.end === childItem.end) {
                        starFlag = false
                    }
                    if (fatherItem.start > childItem.start && fatherItem.start < childItem.end) {
                        starFlag = false
                    }
                    if (fatherItem.end > childItem.start && fatherItem.start < childItem.end) {
                        starFlag = false
                    }
                }
            }
            return starFlag
        },

        saveTable() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.overDueFeedBackData1.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.searchConditionForm.productId != [''] &&
          this.searchConditionForm.autoCreateFeedback != '' &&
          this.searchConditionForm.feedbackNumber != undefined
                ) {
                    this.searchConditionForm.check = false
                }
                this.$refs['overDueFeedBackData1form'].validate((valid) => {
                    if (valid) {
                        this.updateBatch(this.overDueFeedBackData1.data)
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            } else {
                if (this.overDueFeedBackData2.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.searchConditionForm.productId != [''] &&
          this.searchConditionForm.autoCreateFeedback != '' &&
          this.searchConditionForm.feedbackNumber != undefined
                ) {
                    this.searchConditionForm.check = false
                }
                this.$refs['overDueFeedBackData2form'].validate((valid) => {
                    const isAble = this.validateTime(this.overDueFeedBackData2.data, 'feedbackNumber')
                    console.log('valid', valid)
                    if (valid && isAble) {
                        this.updateBatch(this.overDueFeedBackData2.data)
                    } else if (valid && !isAble) {
                        this.$message.warning('会议日程时间冲突！')
                        return false
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            }
        },
        saveTskTable() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.feedbackTaskData1.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.searchTaskForm.productId != [''] &&
          this.searchTaskForm.autoCreateTask != '' &&
          this.searchTaskForm.feedbackNumber != undefined
                ) {
                    this.searchTaskForm.check = false
                }
                this.$refs['feedbackTaskData1form'].validate((valid) => {
                    if (valid) {
                        this.updateBatchTsk(this.feedbackTaskData1.data)
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            } else {
                if (this.feedbackTaskData2.data.length < 1) {
                    return this.$message.warning('当前没有可保存的数据')
                }
                if (
                    this.searchTaskForm.productId != [''] &&
          this.searchTaskForm.autoCreateTask != '' &&
          this.searchTaskForm.feedbackNumber != undefined
                ) {
                    this.searchTaskForm.check = false
                }
                this.$refs['feedbackTaskData2form'].validate((valid) => {
                    const isAble = this.validateTime(this.feedbackTaskData2.data, 'taskNumber')
                    console.log('valid', valid)
                    if (valid && isAble) {
                        this.updateBatchTsk(this.feedbackTaskData2.data)
                    } else if (valid && !isAble) {
                        this.$message.warning('会议日程时间冲突！')
                        return false
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            }
        },
        checkSelectable(row) {
            return row.action == 'view'
        },
        editTable() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.overDueFeedBackData1.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editState = true
                this.overDueFeedBackData1.data.map((item) => {
                    item.action = 'edit'
                })
            } else {
                if (this.overDueFeedBackData2.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editState = true
                this.overDueFeedBackData2.data.map((item) => {
                    item.action = 'edit'
                })
            }
        },

        editV3Table() {
            const pannal = this.recordType === '1'
            if (pannal) {
                if (this.recordTableData.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editV3State = true
                this.recordTableData.data.map((item) => {
                    item.action = 'edit'
                })
            } else {
                if (this.gridTaskData.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editV3State = true
                this.gridTaskData.data.map((item) => {
                    item.action = 'edit'
                })
            }
        },
        editV4Table() {
            const pannal = this.fourthType === '1'
            if (pannal) {
                if (this.seriousTableData.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editV4State = true
                this.seriousTableData.data.map((item) => {
                    item.action = 'edit'
                })
            } else {
                if (this.seriousTaskData.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editV4State = true
                this.seriousTaskData.data.map((item) => {
                    item.action = 'edit'
                })
            }
        },
        calcleEdit(type) {
            if (type == 'fed') {
                this.versionFedList()
            } else if (type == 'tsk') {
                this.versionTskList()
            } else if (type == 'V3Fed') {
                const pannal = this.recordType === '1'
                if (pannal) {
                    this.getMeetingRecord()
                } else {
                    this.getMeetingTskRecord()
                }
            } else {
                this.GetMeetingOverdueRecord()
            }
        },
        editTskTable() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.feedbackTaskData1.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editTskState = true
                this.feedbackTaskData1.data.map((item) => {
                    item.action = 'edit'
                })
            } else {
                if (this.feedbackTaskData2.data.length < 1) {
                    return this.$message.warning('当前没有可编辑的数据')
                }
                this.editTskState = true
                this.feedbackTaskData2.data.map((item) => {
                    item.action = 'edit'
                })
            }
        },
        // 对部分表单字段进行校验
        validateField(form, index) {
            let result = true
            for (const item of this.$refs[form].fields) {
                if (item.prop.split('.')[1] == index) {
                    this.$refs[form].validateField(item.prop, (error) => {
                        if (error != '') {
                            result = false
                        }
                    })
                }
                if (!result) break
            }
            return result
        },
        // 删除操作
        click_delete() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.multipleSelection.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.deleteSelectionById(this.multipleSelection, 'fed')
                    })
                    .catch(() => {})
            } else {
                if (this.multipleSelectionV2.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.deleteSelectionById(this.multipleSelectionV2, 'fed')
                    })
                    .catch(() => {})
            }
        },
        click_delete_v3() {
            const pannal = this.recordType === '1'
            if (pannal) {
                if (this.multipleSelectionV3.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.removeBatchRecord(this.multipleSelectionV3)
                    })
                    .catch(() => {})
            } else {
                // multipleTskV3
                if (this.multipleTskV3.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.removeBatchRecord(this.multipleTskV3)
                    })
                    .catch(() => {})
            }
        },
        click_delete_v4() {
            const pannal = this.fourthType === '1'
            if (pannal) {
                if (this.multipleTsk4.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.removeBatchRecord(this.multipleTsk4)
                    })
                    .catch(() => {})
            } else {
                if (this.multipleSelectionV4.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.removeBatchRecord(this.multipleSelectionV4)
                    })
                    .catch(() => {})
            }
        },
        close_select_v3() {
            if (this.multiplev3list.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multiplev3list.length > 1) {
                this.$message.warning('任务仅支持单个关闭！')
            } else {
                this.handleClose(this.multiplev3list[0])
            }
        },
        close_select_v4() {
            if (this.multipleFedlist4.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleFedlist4.length > 1) {
                this.$message.warning('任务仅支持单个关闭！')
            } else {
                this.handleClose(this.multipleFedlist4[0])
            }
        },
        createChild() {
            if (this.multipleFedlist.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleFedlist.length > 1) {
                this.$message.warning('子任务仅支持单个创建！')
            } else {
                this.tskTypes = true
                this.checkOutRow(this.multipleFedlist[0])
            }
        },
        lookTableV3() {
            if (this.multipleFedlist.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleFedlist.length > 1) {
                this.$message.warning('子任务仅支持单个创建！')
            } else {
                this.tskTypes = false
                this.checkOutRow(this.multipleFedlist[0])
            }
        },
        createChildV4() {
            if (this.multipleTsklist4.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleTsklist4.length > 1) {
                this.$message.warning('子任务仅支持单个创建！')
            } else {
                this.tskTypes = true
                this.checkOutRow(this.multipleTsklist4[0])
            }
        },
        lookTableV4() {
            if (this.multipleTsklist4.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleTsklist4.length > 1) {
                this.$message.warning('子任务仅支持单个查看！')
            } else {
                this.tskTypes = false
                this.checkOutRow(this.multipleTsklist4[0])
            }
        },
        click_tsk_delete() {
            const pannal = this.pannelName === 'V1'
            if (pannal) {
                if (this.multipleTskSelection.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.deleteSelectionById(this.multipleTskSelection, 'tsk')
                    })
                    .catch(() => {})
            } else {
                if (this.multipleTskSelection2.length < 1) {
                    return this.$message.warning('当前没有选中的数据')
                }
                this.$confirm('确定删除选择的数据吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                })
                    .then(() => {
                        // 模拟删除一条数据
                        this.deleteSelectionById(this.multipleTskSelection2, 'tsk')
                    })
                    .catch(() => {})
            }
        },
        setSort(vals) {
            let dragTableEls = ''
            let dragTableEls3 = ''
            let dragTableEl4 = ''
            let dragTableEls2 = ''
            switch (vals) {
                case 'overDueFeedBackData1':
                    dragTableEls = this.$refs.overDueFeedBackRef1.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable = Sortable.create(dragTableEls, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        forceFallback: false,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            const targetRow = this.overDueFeedBackData1.data.splice(
                                oldIndex,
                                1
                            )[0]
                            this.overDueFeedBackData1.data.splice(newIndex, 0, targetRow)
                            this.searchConditionForm.check = true
                        }
                    })
                    break
                case 'feedbackTaskData1':
                    dragTableEls2 = this.$refs.feedbackTaskDataRef1.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEls2, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.searchTaskForm.check = true
                            const targetRow = this.feedbackTaskData1.data.splice(
                                oldIndex,
                                1
                            )[0]
                            this.feedbackTaskData1.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break
                case 'overDueFeedBackData2':
                    dragTableEls3 = this.$refs.overDueFeedBackRef2.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable = Sortable.create(dragTableEls3, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            const targetRow = this.overDueFeedBackData2.data.splice(
                                oldIndex,
                                1
                            )[0]
                            this.overDueFeedBackData2.data.splice(newIndex, 0, targetRow)
                            this.searchConditionForm.check = true
                        }
                    })
                    break
                case 'feedbackTaskData2':
                    dragTableEl4 = this.$refs.feedbackTaskDataRef2.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEl4, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.searchTaskForm.check = true
                            const targetRow = this.feedbackTaskData2.data.splice(
                                oldIndex,
                                1
                            )[0]
                            this.feedbackTaskData2.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break
                case 'recordTableData':
                    dragTableEl4 = this.$refs.multipleTable.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEl4, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.versionThreeForm.check = true
                            const targetRow = this.recordTableData.data.splice(oldIndex, 1)[0]
                            this.recordTableData.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break
                case 'gridTaskData':
                    dragTableEl4 = this.$refs.gridTaskDataTable.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEl4, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.versionFourForm.check = true
                            const targetRow = this.gridTaskData.data.splice(oldIndex, 1)[0]
                            this.gridTaskData.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break
                case 'seriousTableData':
                    dragTableEl4 = this.$refs.seriousTable.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEl4, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.versionFourForm.check = true
                            const targetRow = this.seriousTableData.data.splice(
                                oldIndex,
                                1
                            )[0]
                            this.seriousTableData.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break
                case 'seriousTaskData':
                    dragTableEl4 = this.$refs.seriousTask.$el.querySelectorAll(
                        '.el-table__body-wrapper > table > tbody'
                    )[0]
                    this.sortable2 = Sortable.create(dragTableEl4, {
                        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
                        setData: function(dataTransfer) {
                            // to avoid Firefox bug
                            // Detail see : https://github.com/RubaXa/Sortable/issues/1012
                            dataTransfer.setData('Text', '')
                        },
                        onEnd: ({ newIndex, oldIndex }) => {
                            this.versionThreeForm.check = true
                            const targetRow = this.seriousTaskData.data.splice(oldIndex, 1)[0]
                            this.seriousTaskData.data.splice(newIndex, 0, targetRow)
                        }
                    })
                    break

                default:
                    this.$message.error('无效的操作')
                    break
            }
        },

        resetTable() {
            this.searchConditionForm = {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreateFeedback: '',
                meetingFeedBackTaskIds: [],
                check: false
            }

            if (this.pannelName === 'V1') {
                this.overDueFeedBackData1.data.map((item) => {
                    item.action = 'view'
                })
            } else {
                this.overDueFeedBackData2.data.map((item) => {
                    item.action = 'view'
                })
            }
            this.editState = false
        },
        reset_tsk_Table() {
            this.searchTaskForm = {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreateTask: '',
                meetingFeedBackTaskIds: [],
                check: false
            }
            if (this.pannelName === 'V1') {
                this.feedbackTaskData1.data.map((item) => {
                    item.action = 'view'
                })
            } else {
                this.feedbackTaskData2.data.map((item) => {
                    item.action = 'view'
                })
            }
            this.editTskState = false
        },
        resetV3Table() {
            this.versionThreeForm = {
                meetingId: this.$route.query.id,
                productId: [''],
                taskNumber: undefined,
                feedbackNumber: undefined,
                autoCreate: '',
                meetingFeedBackTaskIds: [],
                check: false
            }
            if (this.recordType === '1') {
                this.recordTableData.data.map((item) => {
                    item.action = 'view'
                })
            } else {
                this.gridTaskData.data.map((item) => {
                    item.action = 'view'
                })
            }
            this.editV3State = false
        },
        resetV4Table() {
            this.versionFourForm = {
                meetingId: this.$route.query.id,
                check: false
            }
            this.editV4State = false
        },
        searchTable() {
            // filterTaskId
            this.versionFedList()
        },
        search_tsk_Table() {
            this.versionTskList()
        },
        searchV3Table() {
            const pannal = this.recordType === '1'
            if (pannal) {
                this.getMeetingRecord()
            } else {
                this.getMeetingTskRecord()
            }
        },
        searchV4Table() {
            this.GetMeetingOverdueRecord()
        },

        deduplication(arrs) {
            var obj = {
                cot: 0
            }
            const result = []
            var hash = []
            arrs.forEach((val) => {
                if (!obj[val.value]) {
                    // 说明 value第一次出现，
                    obj[val.value] = true // obj的键为数据value,值为true,代表该value出现了，此次就不会进if,故不会将出现过的name再次push到result中了。
                    result.push(val)
                }
                val.num = 0
                hash.push(val)
            })
            hash.forEach((item) => {
                arrs.forEach((dd) => {
                    if (item.value === dd.value) {
                        item.num++
                    }
                })
            })
            return this.deduplication2(hash)
        },
        deduplication2(arrs) {
            var obj = {
                cot: 0
            }
            const result = []
            arrs.forEach((val) => {
                if (!obj[val.value]) {
                    // 说明 value第一次出现，
                    obj[val.value] = true // obj的键为数据value,值为true,代表该value出现了，此次就不会进if,故不会将出现过的name再次push到result中了。
                    result.push(val)
                }
                val.text = val.value + ' (' + val.num + ')'
            })
            return result
        },

        filterTag(value, row) {
            return row.feedBackNumber === value
        },
        filterTaskTag(value, row) {
            return row.taskNumber === value
        },
        filterProductNames(value, row) {
            return row.productName === value
        },
        fourthTypeClick() {
            this.editV4State = false
            this.GetMeetingOverdueRecord()
        },
        changeMetting() {
            this.versionFedList()
            this.versionTskList()
        },
        resetTemp() {
            this.dialogFormTemp = {
                // meetingRecordId: undefined,
                feedBackNumber: '',
                // productName: '',
                taskNumber: '',
                productName: '',
                title: ''
                // ctag: 'C2',
                // nextPlan: '',
                // title: '',
                // currentProgress: '',
                // responsibleUserId: '',
                // responsibleUserName: '',
                // otherPrincipalUserId: [],
                // expectedCompletedDate: '',
                // continueMeetingTag: true,
                // masterUser: '',
                // masterId: '',
                // severelyOverdue: false
            }
            this.productUserList = []
            this.recrodsUserList = []
        },
        addTasks() {
            this.resetTemp()
            this.dialogFormVisible = true
            this.$nextTick(() => {
                this.$refs['dataForm'].clearValidate()
            })
        },
        createData() {
            this.$refs['dataForm'].validate((valid) => {
                if (valid) {
                    this.dialogFormTemp.feedBackNumber =
            this.dialogFormTemp.feedBackNumber * 1
                    this.dialogFormTemp.meetingId = this.$route.query.id
                    this.dialogFormTemp.severelyOverdue = this.pannelName !== 'third'
                    this.addMettingRecord(this.dialogFormTemp, 'dataForm')
                    // this.dialogFormVisible = false
                }
            })
        },

        async updateRecordTask(data) {
            const parmars = {
                ctag: data.taskCtag,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.taskExpectedCompletedDate,
                meetingRecordId: data.id,
                nextPlan: data.nextPlan,
                title: data.taskTitle,
                masterUser: data.masterId,
                continueMeeting: data.continueMeeting,
                otherPrincipalUserId: data.otherPrincipaluserIdList,
                responsibleUserId: data.taskResponsibleUserId
            }
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.updateMeetingRecordTask(parmars)
                } else {
                    result = await DelateMetting.updateOverdueTask(parmars)
                }
                if (result.success) {
                    if (this.pannelName === 'third') {
                        this.getMeetingRecord()
                    } else {
                        this.GetMeetingOverdueRecord()
                    }
                    this.$message.success('修改成功')
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        getLocalOpt() {
            // recordTableOpt  v1_top_colOptions v1_bottom_colOptions    v2_top_colOptions  v2_bottom_colOptions  gridTaskDataColunm
            const settingArr = JSON.parse(localStorage.getItem('recordTableOpt'))
            if (settingArr != null) {
                this.colOptions = settingArr
            }
            const settingArr2 = JSON.parse(localStorage.getItem('v1_top_colOptions'))
            if (settingArr2 != null) {
                this.v1_top_colOptions = settingArr2
            }
            const settingArr3 = JSON.parse(
                localStorage.getItem('v1_bottom_colOptions')
            )
            if (settingArr3 != null) {
                this.v1_bottom_colOptions = settingArr3
            }
            const settingArr4 = JSON.parse(localStorage.getItem('v2_top_colOptions'))
            if (settingArr4 != null) {
                this.v2_top_colOptions = settingArr4
            }
            const settingArr5 = JSON.parse(
                localStorage.getItem('v2_bottom_colOptions')
            )
            if (settingArr5 != null) {
                this.v2_bottom_colOptions = settingArr5
            }
            const settingArr6 = JSON.parse(localStorage.getItem('gridTaskDataColunm'))
            if (settingArr6 != null) {
                this.taskOpt = settingArr6
            }
            const settingArr7 = JSON.parse(
                localStorage.getItem('seriousTableDataColunm')
            )
            if (settingArr7 != null) {
                this.v3_fed_colopt = settingArr7
            }
            const settingArr8 = JSON.parse(
                localStorage.getItem('seriousTaskDataColunm')
            )
            if (settingArr8 != null) {
                this.v3_task_colopt = settingArr8
            }
        },
        // 跳转反馈详情
        tofeedBack(id) {
            this.$router.push({
                path: 'Details?id=' + id
            })
        },
        totaskDetail(id) {
            this.$router.push({
                path: 'taskDetail?id=' + id
            })
        },
        // 请求任务关闭原因列表
        async getcloseReasonList() {
            try {
                const result = await taskPandect.GetTaskCloseReason()
                if (result.success) {
                    this.closeReasonList = result.data
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 填写任务关闭备注
        getCloseRemark(Value) {
            this.closeForm.remark = Value
        },
        // 确认任务关闭
        confirmCloseRow(formName) {
            const objs = { ...this.closeForm }
            objs.id = this.taskCommonId
            this.$refs[formName].validate(async(valid) => {
                if (valid) {
                    try {
                        const result = await taskPandect.CloseTask(objs)
                        if (result.success) {
                            this.$message({
                                type: 'success',
                                message: '关闭成功'
                            })
                            this.closeDialogVisible = false
                            this.$nextTick(() => {
                                // form对应你写的<el-form ref="form"></el-form>
                                this.closeForm = {
                                    reason: '',
                                    remark: '',
                                    solution: ''
                                }
                                this.$refs['closeForm'].resetFields()
                            })
                            this.getMeetingTskRecord()
                        } else {
                            this.$message({
                                type: 'error',
                                message: result.message
                            })
                            this.$nextTick(() => {
                                // form对应你写的<el-form ref="form"></el-form>
                                this.closeForm = {
                                    reason: '',
                                    remark: '',
                                    solution: ''
                                }
                                this.$refs['closeForm'].resetFields()
                            })
                            this.closeDialogVisible = false
                            this.getMeetingTskRecord()
                        }
                    } catch (err) {
                        console.log(err)

                        this.$nextTick(() => {
                            // form对应你写的<el-form ref="form"></el-form>
                            this.closeForm = {
                                reason: '',
                                remark: '',
                                solution: ''
                            }
                            this.$refs['closeForm'].resetFields()
                        })
                        this.closeDialogVisible = false
                        this.$message.error('服务器异常')
                        this.getMeetingTskRecord()
                    }
                } else {
                    return false
                }
            })
        },
        getCreateTrack(Value) {
            this.createTaskForm.trackItems = Value
        },
        // 取消任务关闭
        closeCancel() {
            this.$nextTick(() => {
                // form对应你写的<el-form ref="form"></el-form>
                this.closeForm = {
                    reason: '',
                    remark: '',
                    solution: ''
                }
                this.$refs['closeForm'].resetFields()
            })
            this.closeDialogVisible = false
        },
        // 表单清空
        closeChange(val) {
            this.closeDialogVisible = val
            this.$refs['closeForm'].resetFields()
        },
        closeDialogVisibleChange() {
            this.$nextTick(() => {
                // form对应你写的<el-form ref="form"></el-form>
                this.closeForm = {
                    reason: '',
                    remark: '',
                    solution: ''
                }
                this.$refs['closeForm'].resetFields()
            })
            this.closeDialogVisible = false
        },
        async getProductId(_id) {
            const feedBackId = _id
            try {
                const result = await taskPandect.GetProductIdByFeedId({
                    feedBackId: feedBackId
                })
                if (result.success) {
                    this.getUserListById(this.rowData.productId)
                    var list = {
                        continueMeeting: this.rowData.continueMeeting,
                        ctag: 1,
                        currentProgress: '',
                        expectedCompletedDate: '',
                        nextPlan: '',
                        taskType: 0,
                        sourceId: '',
                        bangIdList: [],
                        sourceUrl: '',
                        feedBackNumber: this.rowData.feedBackNumber,
                        masterUser: this.rowData.masterUser,
                        masterId: this.rowData.masterId,
                        meetingRecordId: this.meetingRecordRow.id,
                        otherPrincipalUserNameString: this.rowData.otherPrincipalUserName,
                        otherPrincipaluserList: this.rowData.otherPrincipaluserIdList,
                        responsibleUserId: this.rowData.masterId,
                        responsibleUserName: this.rowData.masterUser,
                        title: '',
                        isEdit: true,
                        type: 'add'
                    }
                    this.gridData.data.push(list)
                } else {
                    this.$message.warning(result.message)
                }
            } catch (err) {
                console.log(err)
            }
        },
        // V3创建/查看子任务
        createRow() {
            for (const i of this.gridData.data) {
                if (i.isEdit) {
                    this.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            this.getProductId(this.rowData.feedBackNumber)
            console.log(this.rowData)
        },
        changeSourceId(val, row) {
            // bangIdList

            if (row.taskType === 0) {
                row.sourceUrl = ''
            } else if (row.taskType === 1) {
                const res = row.bangIdList.find((val2, index, arr) => {
                    return val == val2.zenMasterId
                })
                row.sourceUrl = res.bugUrl
            } else {
                const res = row.bangIdList.find((val2, index, arr) => {
                    return val == val2.zenMasterId
                })
                row.sourceUrl = res.storyUrl
            }
        },
        async getFeedBackCloseSet(_val, row) {
            row.bangIdList = []
            row.sourceId = ''
            row.sourceUrl = ''

            if (_val === 1) {
                try {
                    const result = await FeedBack.GetChangeBugByFeedBack({
                        feedbackId: this.rowData.feedBackId
                    })
                    if (result.success) {
                        row.bangIdList = result.data
                    } else {
                        row.bangIdList = []
                    }
                } catch (error) {
                    row.bangIdList = []
                    console.log(error)
                }
            } else if (_val === 2) {
                try {
                    const result = await FeedBack.GetChangeStoryByFeedBack({
                        feedbackId: this.rowData.feedBackId
                    })
                    if (result.success) {
                        row.bangIdList = result.data
                    } else {
                        row.bangIdList = []
                    }
                } catch (error) {
                    row.bangIdList = []
                    console.log(error)
                }
            } else {
                row.sourceId = ''
                row.bangIdList = []
            }
            //  根据当前id 获得解决方案下拉列表
        },
        // V3子任务添加保存
        async createMeetingRecordTask(data) {
            const parmars = {
                meetingId: this.$route.query.id,
                feedBackNumber: data.feedBackNumber,
                continueMeeting: data.continueMeeting,
                ctag: data.ctag,
                taskType: data.taskType,
                sourceId: data.sourceId,
                sourceUrl: data.sourceUrl,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.expectedCompletedDate,
                meetingRecordId: data.meetingRecordId,
                nextPlan: data.nextPlan,
                title: data.title,
                // masterUser: data.masterId,
                // otherPrincipalUserId: data.otherPrincipaluserList,
                responsibleUserId: data.responsibleUserId,
                insertTaskTag: true
            }
            parmars.severelyOverdue = this.pannelName !== 'third'
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.createMeetingRecordTask(parmars)
                } else {
                    result = await DelateMetting.createOverdueTask(parmars)
                }

                if (result.success) {
                    this.$message({
                        type: 'success',
                        message: '保存成功'
                    })
                    this.meetingRecordTask()
                } else {
                    this.$message({
                        type: 'error',
                        message: result.message || '创建失败'
                    })
                    this.meetingRecordTask()
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // V3子任务修改保存
        async updateMeetingRecordTask(data) {
            const parmars = {
                ctag: data.ctag,
                taskType: data.taskType,
                sourceId: data.sourceId,
                sourceUrl: data.sourceUrl,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.expectedCompletedDate,
                meetingRecordId: data.meetingRecordId,
                nextPlan: data.nextPlan,
                title: data.title,
                // masterUser: data.masterId,
                continueMeeting: data.continueMeeting,
                meetingRecordFeedBackId: data.meetingRecordFeedBackId,
                // otherPrincipalUserId: data.otherPrincipaluserList,
                responsibleUserId: data.responsibleUserId
            }
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.updateMeetingRecordTask(parmars)
                } else {
                    result = await DelateMetting.updateOverdueTask(parmars)
                }
                if (result.success) {
                    this.meetingRecordTask()
                    this.$message.success('修改成功')
                } else {
                    this.meetingRecordTask()
                    this.$message.error('修改失败')
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // V3子表列表
        async meetingRecordTask() {
            const id = this.rowData.id
            const num = this.rowData.feedBackNumber
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.meetingRecordTask(id, num)
                } else {
                    result = await DelateMetting.meetingRecordOverdueTask(id, num)
                }

                if (result.success) {
                    if (result.data) {
                        result.data.forEach((element) => {
                            element.isEdit = false
                            element.type = 'history'
                        })
                        this.gridData.data = result.data
                    } else {
                        this.gridData.data = []
                    }
                } else {
                    this.gridData.data = []
                }
            } catch (err) {
                this.gridData.data = []
                console.log(err)
            }
        },

        // edtiTaskCellClick(row, column) {
        //     const rowData = JSON.parse(JSON.stringify(row))
        //     if (column.label === '下一步措施') {
        //         this.innerVisible = true
        //         this.rowData = rowData
        //         this.taskEditForm = rowData
        //     }
        // },
        gridDatatChange(row, cg) {
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.gridData.data) {
                if (i.isEdit && i.meetingRecordId !== row.meetingRecordId) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                row.isEdit = !row.isEdit
                this.meetingRecordTask()
                return
            }
            this.getUserListById(this.rowData.productId)
            // 提交数据
            if (row.isEdit) {
                // 项目是模拟请求操作
                this.$refs['gridDataform'].validate((valid) => {
                    if (valid) {
                        if (row.type === 'add') {
                            this.createMeetingRecordTask(row)
                            row.isEdit = false
                        } else {
                            this.updateMeetingRecordTask(row)
                            row.isEdit = false
                        }
                    } else {
                        this.$message.warning('请填写完整表格必填项！')
                        return false
                    }
                })
            } else {
                that.gridData.sel = JSON.parse(JSON.stringify(row))
                row.isEdit = true
            }
        },
        seriousTableChange(row, index, cg) {
            this.getUserListById(row.productId)
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.seriousTableData.data) {
                if (i.isSet && i.id !== row.id) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                row.isSet = !row.isSet
                this.GetMeetingOverdueRecord()
                return
            }

            // 提交数据
            if (row.isSet) {
                // 项目是模拟请求操作
                const parmars = JSON.parse(JSON.stringify(that.seriousTableData.sel))
                this.updateSeriousRecordFeedBack(parmars).then(() => {
                    row.isSet = false
                })
            } else {
                that.seriousTableData.sel = JSON.parse(JSON.stringify(row))
                row.isSet = true
            }
        },
        // 同步
        synchronous() {
            this.sendV3(this.$route.query.id)
        },
        async sendV3(_data) {
            try {
                let result
                if (this.pannelName === 'fourth') {
                    result = await DelateMetting.sendOverdue(_data)
                } else {
                    result = await DelateMetting.sendV3(_data)
                }
                if (result.success) {
                    this.$message.success('同步成功')
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },

        handleClose(row) {
            this.closeDialogVisible = true
            this.taskCommonId = row.taskNumber
        },
        cancelCreate() {
            this.updateDialogShow = false
            this.gridData.data = []
        },

        cellEditDialogChange() {
            this.cellEditDialogForm = {}
            if (this.$refs['cellEditDialogForm'] !== undefined) {
                // 清除表单内容和清除表单验证消息
                this.$refs['cellEditDialogForm'].resetFields()
            }
            this.cellEditDialog = false
        },
        saveModiffy(formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    this.cellEditDialogForm.otherPrincipalUserName = this.cellEditDialogForm.otherPrincipalUserName.join(
                        ','
                    )
                    this.cellEditDialogForm.otherPrincipaluserId = this.cellEditDialogForm.otherPrincipaluserId.join(
                        ','
                    )
                    this.cellEditDialog = false
                } else {
                    return false
                }
            })
        },
        tableRowClassName({ row }) {
            if (!row.v2PushTag) {
                return 'info-row'
            } else {
                return 'default-row'
            }
        },
        tableV1ClassName({ row }) {
            if (row.version === 0) {
                return 'info-row'
            } else {
                return 'default-row'
            }
        },
        tableV1tskClassName({ row }) {
            if (row.meetingVersion === 0) {
                return 'info-row'
            } else {
                return 'default-row'
            }
        },
        publishClick() {
            const id = this.$route.query.id

            this.publishMeeting(id)
        },
        async publishMeeting(_parmars) {
            try {
                let result
                if (this.pannelName === 'V2') {
                    result = await DelateMetting.publishMeetingV2(_parmars)
                } else {
                    result = await DelateMetting.publishMeeting(_parmars)
                }
                if (result.success) {
                    this.$message.success(result.message)
                    this.versionFedList()
                    this.versionTskList()
                }
            } catch (err) {
                console.log(err)
            }
        },
        masterTaskChange(e, type) {
            console.log(e, type)
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === e) {
                    names = element.displayName
                }
            })
            console.log(e, names)
            if (type === 'taskMissionForm') {
                this.taskMissionForm.masterId = e
                this.taskMissionForm.master = names
            } else {
                this.createForm.master = names
            }
        },
        masterTaskChanges(e) {
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === e) {
                    names = element.displayName
                }
            })
            this.taskMissionForm.master = names
            console.log(e, names)
        },
        createMasterChange(e) {
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === e) {
                    names = element.displayName
                }
            })
            this.createForm.master = names
        },
        changeTaskChange(e) {
            console.log(e)
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === e) {
                    names = element.displayName
                }
            })
            this.taskMissionForm.applicantName = names
        },
        changeCreateChange(e) {
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === e) {
                    names = element.displayName
                }
            })
            this.createForm.applicantName = names
        },

        async UserGetUserInfoAsync() {
            try {
                const result = await FeedBack.UserGetUserInfoAsync()
                if (result.success) {
                    this.userInfo = result.data
                }
            } catch (err) {
                console.log(err)
            }
        },
        saveTaskMissionForm(formName) {
            this.taskMissionForm.masterId = this.masterID
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === this.masterID) {
                    names = element.displayName
                }
            })
            this.taskMissionForm.master = names
            this.$refs[formName].validate(async(valid) => {
                if (valid) {
                    const parmars = {
                        meetingId: this.$route.query.id,
                        agenda: this.taskMissionForm.agenda,
                        agendaEnd: this.taskMissionForm.agendaEnd,
                        agendaStart: this.taskMissionForm.agendaStart,
                        version: this.pannelName,
                        taskNumber: this.taskMissionForm.taskNumber,
                        continueMeetingTag: this.taskMissionForm.continueMeetingTag,
                        remark: this.taskMissionForm.remark,
                        id: this.taskMissionForm.id,
                        discussionContent: this.taskMissionForm.discussionContent,
                        otherPrincipalUserId: this.taskMissionForm.otherPrincipalUserId,
                        otherPrincipalUserName: this.taskMissionForm.otherPrincipalUserName,
                        feedBackNumber: this.taskMissionForm.feedBackNumber,
                        master: this.taskMissionForm.master,
                        masterId: this.masterID,
                        applicantId: this.taskMissionForm.applicantId,
                        applicantName: this.taskMissionForm.applicantName
                    }
                    try {
                        const result = await DelateMetting.SaveAssociate(parmars)
                        if (result.success) {
                            this.taskMissionVisible = false
                            this.$message.success('保存成功')
                            this.versionFedList()
                            this.versionTskList()
                        } else {
                            this.$message.error(result.message)
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                }
            })
        },
        async getTaskFromDetail(_id, version, productId) {
            try {
                const result = await DelateMetting.GetVersionMeetingInfo(_id, version)
                if (result.success) {
                    this.taskMissionForm = result.data

                    const otherList = result.data.otherPrincipalUserName
                    if (otherList && otherList !== '') {
                        this.taskMissionForm.otherPrincipalUserName = result.data.otherPrincipalUserName.split(
                            ','
                        )
                    } else {
                        this.taskMissionForm.otherPrincipalUserName = []
                    }
                    const otherList2 = result.data.otherPrincipalUserId
                    if (otherList2 && otherList2 !== '') {
                        this.taskMissionForm.otherPrincipalUserId = result.data.otherPrincipalUserId.split(
                            ','
                        )
                    } else {
                        this.taskMissionForm.otherPrincipalUserId = []
                    }
                    this.taskMissionForm.agendaStart = result.data.agendaStart
                    this.taskMissionForm.agendaEnd = result.data.agendaEnd
                    this.taskMissionForm.id = result.data.id
                    this.taskMissionForm.taskCreater = result.data.createUserName
                    this.taskMissionForm.taskNumber = result.data.taskNumber
                    this.taskMissionForm.continueMeetingTag =
            result.data.continueMeetingTag
                    this.taskMissionForm.remark = result.data.remark
                    this.taskMissionForm.discussionContent = result.data.discussionContent
                    this.taskMissionForm.feedBackNumber = result.data.feedBackNumber
                    this.taskMissionForm.applicantId = result.data.applicantId
                    this.taskMissionForm.applicantName = result.data.applicantName

                    this.validateUser(productId, result.data.masterId, result.data.master)
                    let notCheckProduct = false
                    if (this.pannelName === 'third' || this.pannelName === 'fourth') {
                        notCheckProduct = true
                    }
                    const result2 = await DelateMetting.GetTaskOverTime(
                        result.data.taskNumber,
                        notCheckProduct
                    )
                    if (result2.success) {
                        this.taskMissionForm.createUser = result2.data.createUser
                    } else {
                        this.$message.error(result2.message)
                    }
                    this.startTime2 = ''
                    this.endTime2 = ''
                    this.startTime2 = result.data.agenda
                        ? result.data.agenda.substring(0, 5)
                        : ''
                    this.endTime2 = result.data.agenda
                        ? result.data.agenda.substring(6, 11)
                        : ''
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                // this.$message.error('服务器异常');
            }
        },
        async validateUser(id, masterId, master) {
            try {
                const result = await FeedBack.GetListItemAsync({ id: id })
                if (result.success) {
                    const findItem = result.data.find((value) => {
                        return value.id == masterId
                    })
                    if (findItem) {
                        this.createForm.master = master
                        this.createForm.masterId = masterId
                        this.taskMissionForm.master = master
                        this.taskMissionForm.masterId = masterId
                    } else {
                        this.createForm.master = ''
                        this.createForm.masterId = ''
                        this.taskMissionForm.master = ''
                        this.taskMissionForm.masterId = ''
                    }
                    this.productUserList = result.data
                } else {
                    this.productUserList = []
                }
            } catch (err) {
                console.log(err)
                this.createForm.master = ''
                this.createForm.masterId = ''
                this.taskMissionForm.master = ''
                this.taskMissionForm.masterId = ''
                this.productUserList = []
            }
        },
        async getCreateFromDetail(_id, version, productId) {
            try {
                const result = await DelateMetting.GetVersionMeetingInfo({
                    id: _id,
                    version: version
                })
                if (result.success) {
                    // this.createForm = result.data
                    this.createForm.agenda = result.data.agenda
                    this.createForm.continueMeetingTag = result.data.continueMeetingTag
                    this.createForm.discussionContent = result.data.discussionContent
                    this.createForm.discussionContent = result.data.discussionContent
                    this.createForm.id = result.data.id
                    this.createForm.meetingFeedBackTaskLogs =
            result.data.meetingFeedBackTaskLogs

                    this.createForm.meetingId = this.$route.query.id
                    this.createForm.version = '0'
                    this.createForm.feedBackNumber = result.data.feedBackNumber

                    const otherList = result.data.otherPrincipalUserName
                    if (otherList && otherList !== '') {
                        this.createForm.otherPrincipalUserName = result.data.otherPrincipalUserName.split(
                            ','
                        )
                    } else {
                        this.createForm.otherPrincipalUserName = []
                    }
                    const otherList2 = result.data.otherPrincipalUserId
                    if (otherList2 && otherList2 !== '') {
                        this.createForm.otherPrincipalUserId = result.data.otherPrincipalUserId.split(
                            ','
                        )
                    } else {
                        this.createForm.otherPrincipalUserId = []
                    }
                    this.validateUser(productId, result.data.masterId, result.data.master)
                    this.createForm.remark = result.data.remark

                    this.createForm.createUserName = result.data.createUserName
                    this.createForm.createDay = result.data.createDay
                    this.createForm.productName = result.data.productName
                    this.createForm.title = result.data.title
                    this.createForm.applicantId = result.data.applicantId
                    this.createForm.applicantName = result.data.applicantName

                    this.createForm.reviseRecords = result.data.reviseRecords
                    this.startTime = ''
                    this.endTime = ''
                    this.startTime = result.data.agenda
                        ? result.data.agenda.substring(0, 5)
                        : ''
                    this.endTime = result.data.agenda
                        ? result.data.agenda.substring(6, 11)
                        : ''
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                // this.$message.error('服务器异常');
            }
        },
        saveCreateForm(formName) {
            const steId = this.createForm.masterId
            let names = ''
            this.productUserList.forEach((element) => {
                if (element.id === steId) {
                    names = element.displayName
                }
            })
            this.createForm.master = names
            this.$refs[formName].validate(async(valid) => {
                if (valid) {
                    this.createForm.meetingId = this.$route.query.id
                    this.createForm.version = this.pannelName
                    try {
                        const result = await DelateMetting.SaveAssociate(this.createForm)
                        if (result.success) {
                            this.createDialogVisible = false
                            this.$message.success('保存成功')
                            this.versionFedList()
                            this.versionTskList()
                        } else {
                            this.$message.error(result.message)
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                }
            })
        },
        // 保存会议反馈弹出框
        selectIdChange(e, type) {
            const idArr = []
            this.allUserList.forEach((element) => {
                e.forEach((els) => {
                    if (element.id === els) {
                        idArr.push(element.displayName)
                    }
                })
            })

            if (type === 'createForm') {
                this.createForm.otherPrincipalUserName = idArr
            }
        },
        selectTaskIdChange(e) {
            const idArr = []
            this.allUserList.forEach((element) => {
                e.forEach((els) => {
                    if (element.id === els) {
                        idArr.push(element.displayName)
                    }
                })
            })
            this.taskMissionForm.otherPrincipalUserName = idArr
        },
        // 模态框关闭
        createDialogVisibleChange() {
            this.createDialogVisible = false
            this.createForm = {
                agenda: '',
                agendaStart: '',
                agendaEnd: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                remark: '', // 备注
                version: '',
                createUserName: '', // 创建人
                createUser: '',
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            }
        },

        taskMissionVisibleChange() {
            this.startTime2 = ''
            this.endTime2 = ''

            this.taskMissionForm = {
                id: '',
                agenda: '',
                agendaStart: '',
                agendaEnd: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 创建人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: ''
            }
            this.$refs['taskMissionForm'].resetFields()
            this.taskMissionVisible = false
            this.productUserList = []
        },
        // 点击新建
        addCreateFeedBack(version, type) {
            this.createType = type
            if (type === 'add') {
                this.noTaskReason = false
                this.noFeedBackReason = false
                this.createDialogTitle = '新增上会反馈'
            } else {
                this.createDialogTitle = '反馈编辑'
            }
            this.resetForm('createForm')
            // 清空编辑框
            this.createForm = {
                agenda: '',
                agendaStart: '',
                agendaEnd: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                remark: '', // 备注
                version: '',
                createUserName: '', // 创建人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            }
            this.endTime = ''
            this.startTime = ''
            this.createDialogVisible = true
        },
        addtaskMission(version, type) {
            this.taskMissionType = type
            this.masterID = ''
            if (type === 'add') {
                this.taskMissionVisible = true
                this.noTaskReason = false
                this.noFeedBackReason = false
                this.taskMissionTitle = '新增上会任务'
            } else {
                this.taskMissionVisible = true
                this.taskMissionTitle = '任务编辑'
            }

            this.resetForm('taskMissionForm')
            // 清空编辑框
            this.taskMissionForm = {
                id: '',
                agenda: '',
                agendaStart: '',
                agendaEnd: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 创建人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: ''
            }
            this.endTime = ''
            this.startTime = ''
        },

        getObjectURL(file) {
            let url = null
            if (window.createObjectURL !== undefined) {
                // basic
                url = window.createObjectURL(file)
            } else if (window.webkitURL !== undefined) {
                // webkit or chrome
                url = window.webkitURL.createObjectURL(file)
            } else if (window.URL !== undefined) {
                // mozilla(firefox)
                url = window.URL.createObjectURL(file)
            }
            return url
        },
        addTag(newTag) {
            let istrue = false
            this.otherPrincipalList.forEach((element) => {
                if (element.userName === newTag || element.email === newTag) {
                    istrue = true
                }
            })
            if (istrue) {
                const tag = {
                    email: newTag,
                    userName:
            newTag.substring(0, 2) + Math.floor(Math.random() * 10000000)
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.recipientUser.push(tag)
            } else {
                const tag = {
                    email: newTag,
                    userName: null
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.recipientUser.push(tag)
            }
        },
        addTag2(newTag) {
            let istrue = false
            this.otherPrincipalList.forEach((element) => {
                if (element.userName === newTag || element.email === newTag) {
                    istrue = true
                }
            })
            if (istrue) {
                const tag = {
                    email: newTag,
                    userName:
            newTag.substring(0, 2) + Math.floor(Math.random() * 10000000)
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.copyRecipients.push(tag)
            } else {
                const tag = {
                    email: newTag,
                    userName: null
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.copyRecipients.push(tag)
            }
        },
        nameWithLang({ name, email }) {
            if (name) {
                return `${email} <${name}>`
            } else {
                return `${email}`
            }
        },
        // 删除
        async remove(_id, version) {
            try {
                const result = await DelateMetting.Remove(_id, version)
                if (result.success) {
                    this.$message.success('删除成功')
                    this.versionFedList()
                    this.versionTskList()
                    this.rowObj = {}
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 超期反馈V1table
        async versionFedList() {
            try {
                const result = await DelateMetting.versionFedList({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.searchConditionForm.autoCreateFeedback,
                    feedbackProductIds: this.searchConditionForm.productId,
                    check: this.searchConditionForm.check,
                    feedbackNumber: this.searchConditionForm.feedbackNumber,
                    meetingFeedBackTaskIds: this.searchConditionForm
                        .meetingFeedBackTaskIds,
                    updateDto: []
                })
                if (result.success) {
                    result.data.feedBackList.map((item) => {
                        this.$set(item, 'action', 'view')
                        return item
                    })
                    const fedArr = JSON.parse(JSON.stringify(result.data.feedBackList))
                    if (this.pannelName === 'V1') {
                        this.overDueFeedBackDataloading = true
                        setTimeout(() => {
                            this.overDueFeedBackDataloading = false
                            this.overDueFeedBackData1.data = fedArr
                        }, 1000)
                        this.$nextTick(() => {
                            if (this.$refs.overDueFeedBackRef1) {
                                this.$refs.overDueFeedBackRef1.clearSelection()
                                this.setSort('overDueFeedBackData1')
                            }
                        })
                    } else if (this.pannelName === 'V2') {
                        this.feedbackTaskDataloading = true
                        setTimeout(() => {
                            this.feedbackTaskDataloading = false
                            this.overDueFeedBackData2.data = fedArr
                        }, 1000)
                        this.$nextTick(() => {
                            if (this.$refs.overDueFeedBackRef2) {
                                this.$refs.overDueFeedBackRef2.clearSelection()
                                this.setSort('overDueFeedBackData2')
                            }
                        })
                    }
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
            this.editState = false
        },
        async versionTskList() {
            try {
                const result = await DelateMetting.versionTskList({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateTask: this.searchTaskForm.autoCreateTask,
                    taskProductIds: this.searchTaskForm.productId,
                    check: this.searchTaskForm.check,
                    taskNumber: this.searchTaskForm.taskNumber,
                    meetingFeedBackTaskIds: this.searchTaskForm.meetingFeedBackTaskIds,
                    updateDto: []
                })
                if (result.success) {
                    result.data.taskList.map((item) => {
                        this.$set(item, 'action', 'view')
                        return item
                    })

                    const taskArr = JSON.parse(JSON.stringify(result.data.taskList))

                    if (this.pannelName === 'V1') {
                        this.overDuetaskloading = true
                        setTimeout(() => {
                            this.overDuetaskloading = false
                            this.feedbackTaskData1.data = taskArr
                        }, 1000)
                        this.$nextTick(() => {
                            if (this.$refs.feedbackTaskDataRef1) {
                                this.$refs.feedbackTaskDataRef1.clearSelection()
                                this.setSort('feedbackTaskData1')
                            }
                        })
                    } else if (this.pannelName === 'V2') {
                        this.overDuetaskloading2 = true
                        setTimeout(() => {
                            this.overDuetaskloading2 = false
                            this.feedbackTaskData2.data = taskArr
                        }, 1000)
                        this.$nextTick(() => {
                            if (this.$refs.feedbackTaskDataRef2) {
                                this.$refs.feedbackTaskDataRef2.clearSelection()
                                this.setSort('feedbackTaskData2')
                            }
                        })
                    }
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
            this.editTskState = false
        },

        // 根据反馈ID请求任务下拉框数据
        async getFeedBackOverTime(feedBackNumber) {
            let notCheckProduct = false
            if (this.pannelName === 'third' || this.pannelName === 'fourth') {
                notCheckProduct = true
            }
            try {
                const result = await DelateMetting.GetFeedBackOverTime(
                    feedBackNumber,
                    notCheckProduct
                )
                if (result.success) {
                    this.createForm.createDay = result.data.createDay
                    this.createForm.createUser = result.data.createUser
                    this.createForm.productName = result.data.productName
                    this.createForm.title = result.data.title
                    this.createForm.masterId = result.data.currentStageUserId
                    this.createForm.master = result.data.currentStageUser
                    this.couldClick = true
                    this.taskList = result.data.taskList
                    this.recordsForm.productName = result.data.productName
                    this.dialogFormTemp.productName = result.data.productName

                    this.recordsForm.title = result.data.title

                    this.getUserListById(result.data.productId)
                    this.$message.success('查询成功')
                } else {
                    if (this.dialogFormVisible) {
                        this.dialogFormTemp.feedBackNumber = ''
                        this.dialogFormTemp.productName = ''
                    }
                    if (this.recordsFormVisible) {
                        this.recordsForm.title = ''
                        this.recordsForm.productName = ''
                        this.recordsForm.feedBackNumber = ''
                    }
                    if (this.createDialogVisible) {
                        this.createForm.feedBackNumber = ''
                    }

                    this.couldClick = false
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                if (this.dialogFormVisible) {
                    this.dialogFormTemp.feedBackNumber = ''
                }
                if (this.recordsFormVisible) {
                    this.recordsForm.title = ''
                    this.recordsForm.productName = ''
                    this.recordsForm.feedBackNumber = ''
                }
                if (this.createDialogVisible) {
                    this.createForm.feedBackNumber = ''
                }
                this.couldClick = false
                this.$message.error('服务器异常')
            }
        },
        // 根据任务ID请求创建天数
        async getTaskOverTime(taskNumber) {
            let notCheckProduct = false
            if (this.pannelName === 'third' || this.pannelName === 'fourth') {
                notCheckProduct = true
            }
            try {
                const result = await DelateMetting.GetTaskOverTime(
                    taskNumber,
                    notCheckProduct
                )
                if (result.success) {
                    const feedInfo = result.data.feedBackOverTimeDto
                    const taskInfo = result.data
                    if (result.data.feedBackOverTimeDto) {
                        this.taskMissionForm.createUser = feedInfo.createUser
                        this.taskMissionForm.taskCreater = taskInfo.responsibleUserName
                        this.taskMissionForm.createDay = feedInfo.createDay
                        this.taskMissionForm.title = feedInfo.title
                        this.taskMissionForm.master = taskInfo.responsibleUserName
                        this.taskMissionForm.masterId = taskInfo.responsibleUserId
                        this.masterID = taskInfo.responsibleUserId

                        this.getUserListById(feedInfo.productId)
                        this.taskMissionForm.productName = feedInfo.productName
                        this.taskMissionForm.feedBackNumber = taskInfo.feedBackNumber
                        this.$message.success('查询成功')
                    } else {
                        this.taskMissionForm.createUser = ''
                        this.taskMissionForm.taskCreater = ''
                        this.taskMissionForm.createDay = ''
                        this.taskMissionForm.master = ''
                        this.taskMissionForm.title = ''
                        this.taskMissionForm.productName = ''
                        this.taskMissionForm.feedBackNumber = ''
                        this.taskMissionForm.taskNumber = ''

                        this.resetForm('taskMissionForm')
                        this.$message.error(result.message || '该任务ID不存在')
                    }
                } else {
                    this.taskMissionForm.createUser = ''
                    this.taskMissionForm.taskCreater = ''
                    this.taskMissionForm.createDay = ''
                    this.taskMissionForm.master = ''
                    this.taskMissionForm.title = ''
                    this.taskMissionForm.productName = ''
                    this.taskMissionForm.feedBackNumber = ''
                    this.taskMissionForm.taskNumber = ''
                    this.resetForm('taskMissionForm')

                    this.$message.error(result.message || '该任务ID不存在')
                }
            } catch (err) {
                console.log(err)
            }
        },
        /**
     * 替换字段
     */
        handleDealFilter(arr, key, replaceKey) {
            const newArr = []
            arr.forEach((item) => {
                for (var i = 0; i < key.length; i++) {
                    item[key] = item[replaceKey]
                }
                newArr.push(item)
            })
            return newArr
        },
        // 获取发布
        async getEmail() {
            try {
                const result = await DelateMetting.GetEmail({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.searchConditionForm.autoCreateFeedback,
                    autoCreateTask: this.searchTaskForm.autoCreateTask,
                    feedbackProductIds: this.searchConditionForm.productId,
                    taskProductIds: this.searchTaskForm.productId,
                    taskNumber: this.searchTaskForm.taskNumber,
                    feedbackNumber: this.searchConditionForm.feedbackNumber
                })
                if (result.success) {
                    const arrs = result.data.recipientUser
                        ? result.data.recipientUser
                        : []
                    const arrs2 = result.data.copyRecipients
                        ? result.data.copyRecipients
                        : []
                    const ars1 = []
                    const ars2 = []
                    arrs.forEach((els) => {
                        ars1.push({
                            name: els.userName,
                            email: els.email
                        })
                    })
                    arrs2.forEach((els) => {
                        ars2.push({
                            name: els.userName,
                            email: els.email
                        })
                    })

                    this.versionForm.recipientUser = ars1
                    this.versionForm.title = result.data.title
                    this.versionForm.copyRecipients = ars2
                    this.versionForm.appendixsName = result.data.appendixsName
                    this.versionForm.content = result.data.content
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 发送发布
        async sendEmail(_data, formName) {
            try {
                const result = await DelateMetting.SendEmail(_data)
                if (result.success) {
                    this.$message.success('发送成功')
                    this.fullscreenLoading = false
                    this.versionFedList()
                    this.versionTskList()
                    this.clearForm(formName)
                } else {
                    this.fullscreenLoading = false
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.fullscreenLoading = false
                this.$message.error('服务器异常')
            }
        },
        // 会议记录表格
        async getMeetingRecord() {
            this.recordTableData.data = []
            try {
                const result = await DelateMetting.GetMeetingRecordFeedbackList({
                    meetingId: this.$route.query.id,
                    autoCreateFeedback: this.versionThreeForm.autoCreate,
                    autoCreateTask: this.versionThreeForm.autoCreate,
                    feedbackProductIds: this.versionThreeForm.productId,
                    taskProductIds: this.versionThreeForm.productId,
                    taskNumber: this.versionThreeForm.taskNumber,
                    feedbackNumber: this.versionThreeForm.feedbackNumber
                })
                if (result.success) {
                    const fedArr = JSON.parse(JSON.stringify(result.data.feedBackList))
                    this.recordTableDataLoading = true
                    setTimeout(() => {
                        this.recordTableDataLoading = false
                        if (fedArr) {
                            fedArr.map((item) => {
                                this.$set(item, 'action', 'view')
                                return item
                            })
                            this.recordTableData.data = fedArr
                            this.$nextTick(() => {
                                if (this.$refs.multipleTable) {
                                    this.$refs.multipleTable.clearSelection()
                                    this.setSort('recordTableData')
                                }
                            })
                        } else {
                            this.recordTableData.data = []
                        }
                    }, 1000)
                } else {
                    this.recordTableData.data = []
                }
            } catch (err) {
                console.log(err)
                this.recordTableData.data = []
                this.$message.error(err)
            }
            this.editV3State = false
        },
        async getMeetingTskRecord() {
            this.gridTaskData.data = []
            try {
                const result = await DelateMetting.GetMeetingRecordTaskList({
                    meetingId: this.$route.query.id,
                    autoCreateFeedback: this.versionThreeForm.autoCreate,
                    autoCreateTask: this.versionThreeForm.autoCreate,
                    feedbackProductIds: this.versionThreeForm.productId,
                    taskProductIds: this.versionThreeForm.productId,
                    taskNumber: this.versionThreeForm.taskNumber,
                    feedbackNumber: this.versionThreeForm.feedbackNumber
                })
                if (result.success) {
                    const taskArr = JSON.parse(JSON.stringify(result.data.taskList))
                    this.recordTableDataLoading = true
                    setTimeout(() => {
                        this.recordTableDataLoading = false
                        if (taskArr) {
                            taskArr.map((item) => {
                                this.$set(item, 'action', 'view')
                                return item
                            })
                            this.gridTaskData.data = taskArr
                            this.$nextTick(() => {
                                if (this.$refs.gridTaskDataTable) {
                                    this.$refs.gridTaskDataTable.clearSelection()
                                    this.setSort('gridTaskData')
                                }
                            })
                        } else {
                            this.gridTaskData.data = []
                        }
                    }, 1000)
                } else {
                    this.gridTaskData.data = []
                }
            } catch (err) {
                console.log(err)
                this.gridTaskData.data = []
                this.$message.error(err)
            }
            this.editV3State = false
        },

        async GetMeetingOverdueRecord() {
            try {
                const result = await DelateMetting.GetMeetingOverdueRecord(
                    this.$route.query.id
                )
                if (result.success) {
                    this.seriousTableDataLoading = true
                    setTimeout(() => {
                        this.seriousTableDataLoading = false
                        if (result.data) {
                            const fedArr = JSON.parse(
                                JSON.stringify(result.data.feedBackList)
                            )
                            const taskArr = JSON.parse(JSON.stringify(result.data.taskList))
                            if (fedArr) {
                                fedArr.map((item) => {
                                    this.$set(item, 'action', 'view')
                                    return item
                                })

                                this.seriousTableData.data = fedArr
                                this.$nextTick(() => {
                                    if (this.$refs.multipleTable) {
                                        this.$refs.multipleTable.clearSelection()
                                        this.setSort('seriousTableData')
                                    }
                                })
                            } else {
                                this.seriousTableData.data = []
                            }
                            if (taskArr) {
                                taskArr.map((item) => {
                                    this.$set(item, 'action', 'view')
                                    return item
                                })
                                this.seriousTaskData.data = taskArr
                                this.$nextTick(() => {
                                    if (this.$refs.seriousTask) {
                                        this.$refs.seriousTask.clearSelection()
                                        this.setSort('seriousTaskData')
                                    }
                                })
                            } else {
                                this.seriousTaskData.data = []
                            }
                        } else {
                            this.seriousTableData.data = []
                            this.seriousTaskData.data = []
                        }
                    }, 1000)
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
            this.editV4State = false
        },
        // 添加会议记录
        async addMettingRecord(_data, name) {
            try {
                const result = await DelateMetting.AddMettingRecord(_data)
                if (result.success) {
                    if (this.pannelName === 'third') {
                        if (this.recordType === '1') {
                            this.getMeetingRecord()
                        } else {
                            this.getMeetingTskRecord()
                        }
                    } else {
                        this.GetMeetingOverdueRecord()
                    }
                    this.clearForm(name)
                    this.dialogFormVisible = false
                    this.$message.success('添加成功')
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        async removeBatchRecord(list) {
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.removeBatchRecord({
                        meetingRecordIds: list
                    })
                } else {
                    result = await DelateMetting.removeBatchOverdue({
                        meetingRecordOverdueIds: list
                    })
                }
                if (result.success) {
                    if (this.pannelName === 'third') {
                        const pannal = this.recordType === '1'
                        if (pannal) {
                            this.getMeetingRecord()
                        } else {
                            this.getMeetingTskRecord()
                        }
                    } else {
                        this.GetMeetingOverdueRecord()
                    }
                    this.$message.success('删除成功')
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },

        // 删除会议记录
        async deleteMettingRecord(_id) {
            try {
                let result
                if (this.pannelName === 'third') {
                    result = await DelateMetting.removeBatchRecord(_id)
                } else {
                    result = await DelateMetting.removeBatchOverdue(_id)
                }
                if (result.success) {
                    if (this.pannelName === 'third') {
                        this.getMeetingRecord()
                    } else {
                        this.GetMeetingOverdueRecord()
                    }
                    this.$message.success('删除成功')
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // 修改会议记录
        async updateMeetingRecordFeedBack() {
            try {
                const result = await DelateMetting.updateMeetingRecordFeedBack({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.versionThreeForm.autoCreate,
                    feedbackProductIds: this.versionThreeForm.productId,
                    check: this.versionThreeForm.check,
                    taskNumber: this.versionThreeForm.taskNumber,
                    feedbackNumber: this.versionThreeForm.feedbackNumber,
                    meetingFeedBackTaskIds: this.versionThreeForm.meetingFeedBackTaskIds,
                    feedBackList: this.recordTableData.data
                })
                if (result.success) {
                    this.$message.success('修改成功')
                    this.getMeetingRecord()
                }
                if (result.code === 500) {
                    this.$message.error('服务器错误')
                    this.getMeetingRecord()
                }
            } catch (err) {
                this.$message.error(err)
            }
        },
        async updateBtachTaskMeetingRecord() {
            try {
                const result = await DelateMetting.updateBtachTaskMeetingRecord({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.versionThreeForm.autoCreate,
                    feedbackProductIds: this.versionThreeForm.productId,
                    check: this.versionThreeForm.check,
                    taskNumber: this.versionThreeForm.taskNumber,
                    feedbackNumber: this.versionThreeForm.feedbackNumber,
                    meetingFeedBackTaskIds: this.versionThreeForm.meetingFeedBackTaskIds,
                    taskList: this.gridTaskData.data
                })
                if (result.success) {
                    this.$message.success('修改成功')
                    this.getMeetingTskRecord()
                }
                if (result.code === 500) {
                    this.$message.error('服务器错误')
                    this.getMeetingTskRecord()
                }
            } catch (err) {
                this.$message.error(err)
            }
        },
        async updateSeriousRecordFeedBack(_data) {
            try {
                const result = await DelateMetting.updateSeriousRecordFeedBack(_data)
                if (result.success) {
                    this.$message.success('修改成功')
                    this.GetMeetingOverdueRecord()
                }
                if (result.code === 500) {
                    this.$message.error('服务器错误')
                    this.GetMeetingOverdueRecord()
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        async upadteBtachFeedbackMeetingRecordOverdue() {
            try {
                const result = await DelateMetting.upadteBtachFeedbackMeetingRecordOverdue(
                    {
                        meetingId: this.$route.query.id,
                        check: true,
                        feedBackList: this.seriousTableData.data
                    }
                )
                if (result.success) {
                    this.$message.success('修改成功')
                    this.GetMeetingOverdueRecord()
                }
                if (result.code === 500) {
                    this.$message.error('服务器错误')
                    this.GetMeetingOverdueRecord()
                }
            } catch (err) {
                this.$message.error(err)
            }
            this.editV4State = false
        },
        async upadteBtachTaskMeetingRecordOverdue() {
            try {
                const result = await DelateMetting.upadteBtachTaskMeetingRecordOverdue({
                    meetingId: this.$route.query.id,
                    check: true,
                    taskList: this.seriousTaskData.data
                })
                if (result.success) {
                    this.$message.success('修改成功')
                    this.GetMeetingOverdueRecord()
                }
                if (result.code === 500) {
                    this.$message.error('服务器错误')
                    this.GetMeetingOverdueRecord()
                }
            } catch (err) {
                this.$message.error(err)
            }
            this.editV4State = false
        },
        // V1V2导出查询结果
        async exportMetting() {
            try {
                const result = await DelateMetting.ExportMetting({
                    meetingId: this.$route.query.id,
                    version: this.pannelName,
                    autoCreateFeedback: this.searchConditionForm.autoCreateFeedback,
                    autoCreateTask: this.searchTaskForm.autoCreateTask,
                    feedbackProductIds: this.searchConditionForm.productId,
                    taskProductIds: this.searchTaskForm.productId,
                    taskNumber: this.searchTaskForm.taskNumber,
                    feedbackNumber: this.searchConditionForm.feedbackNumber
                })
                console.log(result)
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // 导出会议记录
        async exportMettingRecord() {
            try {
                let result
                if (this.pannelName === 'fourth') {
                    result = await DelateMetting.ExportOverdueRecord(this.$route.query.id)
                } else {
                    result = await DelateMetting.ExportMettingRecord({
                        meetingId: this.$route.query.id,
                        version: this.pannelName,
                        autoCreateFeedback: this.versionThreeForm.autoCreate,
                        autoCreateTask: this.versionThreeForm.autoCreate,
                        feedbackProductIds: this.versionThreeForm.productId,
                        taskProductIds: this.versionThreeForm.productId,
                        taskNumber: this.versionThreeForm.taskNumber,
                        feedbackNumber: this.versionThreeForm.feedbackNumber
                    })
                }
                console.log(result)
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        feedIdChange(v) {
            this.couldClick = false
            this.createForm.createDay = ''
            this.createForm.createUser = ''
            this.createForm.productName = ''
            this.createForm.title = ''
            this.createForm.masterId = ''
            this.createForm.master = ''
            this.productUserList = []
        },
        searchFeed() {
            this.couldClick = false
            let flag = true
            const ids = this.createForm.feedBackNumber
            this.createForm.createDay = ''
            this.createForm.createUser = ''
            this.createForm.productName = ''
            this.createForm.title = ''
            this.createForm.otherPrincipalUserId = ''
            this.createForm.applicantId = ''
            this.$refs['createForm'].validateField(['feedBackNumber'], (valid) => {
                if (valid !== '') {
                    flag = false
                }
            })
            if (flag) {
                this.getFeedBackOverTime(ids)
            } else {
                this.couldClick = false
                this.createForm.feedBackNumber = ''
            }
        },
        searchIdsForFeed(name) {
            this.couldClick = false
            let flag = true

            const ids =
        name === 'dataForm'
            ? this.dialogFormTemp.feedBackNumber
            : this.recordsForm.feedBackNumber
            this.$refs[name].validateField(['feedBackNumber'], (valid) => {
                if (valid !== '') {
                    flag = false
                }
            })
            if (flag) {
                this.getFeedBackOverTime(ids)
            } else {
                this.couldClick = false
                if (name == 'dialogFormTemp') {
                    this.dialogFormTemp.feedBackNumber = ''
                    this.dialogFormTemp.productName = ''
                } else {
                    this.recordsForm.feedBackNumber = ''
                    this.recordsForm.productName = ''
                }
            }
        },

        changeFeedId() {
            this.dialogFormTemp.taskNumber = ''
            this.dialogFormTemp.productName = ''
            this.dialogFormTemp.title = ''
            this.taskList = []
            this.couldClick = false
        },
        async changeV3TaskId(v) {
            this.dialogFormTemp.title = ''
            if (v) {
                let notCheckProduct = false
                if (this.pannelName === 'third' || this.pannelName === 'fourth') {
                    notCheckProduct = true
                }
                try {
                    const result2 = await DelateMetting.GetTaskOverTime(
                        v,
                        notCheckProduct
                    )
                    if (result2.success) {
                        this.dialogFormTemp.title = result2.data.feedBackOverTimeDto.title
                    } else {
                        this.dialogFormTemp.title = ''
                        this.$message.error(result2.message)
                    }
                } catch (err) {
                    this.dialogFormTemp.title = ''
                    console.log(err)
                }
            }
        },

        // 接口函数开始↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        // 根据反馈ID请求任务下拉框数据
        selectTaskChange() {
            this.couldClick = false
            this.recordsForm.productName = ''
            this.recordsForm.title = ''
        },
        async taskQuery(v) {
            this.dialogFormTemp.productName = ''
            this.productUserList = []
            this.recrodsUserList = []
            let notCheckProduct = false
            if (this.pannelName === 'third' || this.pannelName === 'fourth') {
                notCheckProduct = true
            }
            if (v && v.trim()) {
                try {
                    const result = await DelateMetting.GetFeedBackOverTime(
                        v,
                        notCheckProduct
                    )
                    if (result.success) {
                        this.dialogFormTemp.productName = result.data.productName
                        this.getUserListById(result.data.productId)
                    } else {
                        this.$message.error(result.message)
                        this.dialogFormTemp.productName = ''
                    }
                } catch (err) {
                    this.dialogFormTemp.productName = ''

                    this.$message.error('服务器异常')
                }
            }
        },
        // 删除
        deleteConfirm() {
            this.remove(this.rowObj.id, this.pannelName)
            this.deleteDialogVisible = false
        },

        async publishMeetingv3(id) {
            try {
                const result = await DelateMetting.publishMeetingv3(id)
                if (result.success) {
                    this.$message({
                        type: 'success',
                        message: '推送成功!'
                    })
                    this.GetMeetingOverdueRecord()
                } else {
                    this.GetMeetingOverdueRecord()
                }
            } catch (err) {
                console.log(err)
                this.$message({
                    type: 'error',
                    message: '推送错误'
                })
                this.GetMeetingOverdueRecord()
            }
        },
        searchTaskId() {
            this.couldClick = false
            let flag = true
            this.taskMissionForm.createUser = ''
            this.taskMissionForm.taskCreater = ''
            this.taskMissionForm.createDay = ''
            this.taskMissionForm.master = ''
            this.taskMissionForm.title = ''
            this.taskMissionForm.productName = ''
            this.taskMissionForm.feedBackNumber = ''
            this.taskMissionForm.masterId = ''
            this.taskMissionForm.otherPrincipalUserId = ''
            this.taskMissionForm.applicantId = ''
            this.$refs['taskMissionForm'].validateField(['taskNumber'], (valid) => {
                if (valid !== '') {
                    flag = false
                }
            })
            if (flag) {
                this.getTaskOverTime(this.taskMissionForm.taskNumber)
            } else {
                this.couldClick = false
                this.taskMissionForm.taskNumber = ''
                this.productUserList = []
            }
        },
        //
        taskNumberChange() {
            this.taskMissionForm.createUser = ''
            this.taskMissionForm.taskCreater = ''
            this.taskMissionForm.createDay = ''
            this.taskMissionForm.master = ''
            this.taskMissionForm.masterId = ''
            this.taskMissionForm.title = ''
            this.taskMissionForm.productName = ''
            this.taskMissionForm.feedBackNumber = ''
            this.productUserList = []
            // if (v && v.trim()) {
            //     this.productUserList = []
            //     this.getTaskOverTime(v)
            // }
        },
        // 添加账号
        addMasterUser() {
            this.recordsForm.title = ''
            this.recordsForm.productName = ''
            this.recordsForm.feedBackNumber = ''
            this.recordsFormVisible = true
        },
        tableRowDelete(row) {
            this.$confirm('确认删除该条超期记录吗?', '删除', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'error'
            })
                .then(() => {
                    this.deleteMettingRecord(row.id)
                })
                .catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消删除'
                    })
                })
        },
        pushTaskFed() {
            if (this.multipleTsklist4.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleTsklist4.length > 1) {
                this.$message.warning('推送仅支持单个推送！')
            } else {
                this.pushTask(this.multipleTsklist4[0].id)
            }
        },
        pushTaskFed2() {
            if (this.multipleFedlist4.length < 1) {
                this.$message.warning('当前没有选中的数据！')
            } else if (this.multipleFedlist4.length > 1) {
                this.$message.warning('推送仅支持单个推送！')
            } else {
                this.pushTask(this.multipleFedlist4[0].id)
            }
        },
        pushTask(id) {
            this.$confirm('确认推送该条严重超期数据吗?', '推送', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'info'
            })
                .then(() => {
                    this.publishMeetingv3(id)
                })
                .catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消推送'
                    })
                })
        },
        checkOutRow(row) {
            if (!row.masterId || row.masterId === '') {
                this.$message.error('请选择主负责人')
                return
            }
            if (
                !row.otherPrincipaluserIdList ||
        row.otherPrincipaluserIdList === []
            ) {
                this.$message.error('请选择其他负责人')
                return
            }
            this.rowData = row
            this.updateDialogShow = true
            this.meetingRecordRow = row
            this.meetingRecordTask()
        },

        resetForm(formName) {
            if (this.$refs[formName] !== undefined) {
                // 清除表单内容和清除表单验证消息
                this.$refs[formName].resetFields()
            }
        },
        // 合并数据过滤
        flitterMettingData(arr) {
            const spanOneArr = []
            const spanTwoArr = []

            let concatOne = 0
            let concatTwo = 0

            arr.forEach((item, index) => {
                if (index === 0) {
                    spanOneArr.push(1)
                    spanTwoArr.push(1)
                } else {
                    if (item.continueMeetingTag === arr[index - 1].continueMeetingTag) {
                        // 第一列需合并相同内容的判断条件
                        spanOneArr[concatOne] += 1
                        spanOneArr.push(0)
                    } else {
                        spanOneArr.push(1)
                        concatOne = index
                    }
                    if (item.productName === arr[index - 1].productName) {
                        // 第一列需合并相同内容的判断条件
                        spanTwoArr[concatTwo] += 1
                        spanTwoArr.push(0)
                    } else {
                        spanTwoArr.push(1)
                        concatTwo = index
                    }
                }
            })
            return {
                one: spanOneArr,
                two: spanTwoArr
            }
        },
        flitterMettingData2(arr) {
            const spanOneArr = []
            const spanTwoArr = []

            let concatOne = 0
            let concatTwo = 0
            arr.forEach((item, index) => {
                if (index === 0) {
                    spanOneArr.push(1)
                    spanTwoArr.push(1)
                } else {
                    if (item.continueMeeting === arr[index - 1].continueMeeting) {
                        // 第一列需合并相同内容的判断条件
                        spanOneArr[concatOne] += 1
                        spanOneArr.push(0)
                    } else {
                        spanOneArr.push(1)
                        concatOne = index
                    }
                    if (item.productName === arr[index - 1].productName) {
                        // 第一列需合并相同内容的判断条件
                        spanTwoArr[concatTwo] += 1
                        spanTwoArr.push(0)
                    } else {
                        spanTwoArr.push(1)
                        concatTwo = index
                    }
                }
            })
            return {
                one: spanOneArr,
                two: spanTwoArr
            }
        },
        handleInputConfirm() {
            const inputValue = this.inputValue
            if (inputValue) {
                this.dynamicTags.push(inputValue)
            }
            this.inputVisible = false
            this.inputValue = ''
        },
        handleInputConfirm2() {
            const inputValue = this.inputValue2
            if (inputValue) {
                this.dynamicTags2.push(inputValue)
            }
            this.inputVisible2 = false
            this.inputValue2 = ''
        },
        // tab切换
        handleClick(tab) {
            if (tab.name === 'V1' || tab.name === 'V2') {
                this.v1ShowType = '1'
                // this.$nextTick(() => {
                //     this.$refs.feedbackTaskDataRef1.doLayout()
                //     this.$refs.overDueFeedBackRef1.doLayout()
                // })
                this.editState = false
                if (this.v1ShowType === '1') {
                    this.resetTable()
                    this.versionFedList()
                } else {
                    this.reset_tsk_Table()
                    this.versionTskList()
                }
            } else if (tab.name === 'third') {
                this.recordType = '1'
                // this.$nextTick(() => {
                //     this.$refs.multipleTable.doLayout()
                // })
                this.resetV3Table()
                this.getMeetingRecord()
            } else {
                this.fourthType = '1'
                this.resetV4Table()

                this.GetMeetingOverdueRecord()
            }
        },
        changeV1FedOrTask(v) {
            this.editState = false
            if (v === '1') {
                this.resetTable()
                this.versionFedList()
            } else {
                this.reset_tsk_Table()
                this.versionTskList()
            }
        },
        handlerecordTypeClick(v) {
            this.resetV3Table()
            if (v === '1') {
                this.getMeetingRecord()
            } else {
                this.getMeetingTskRecord()
            }
        },
        goback() {
            this.$router.push('delateMeeting')
        },
        inportTable() {},
        //
        exportTable() {
            this.exportMetting()
        },
        exportRecord() {
            this.exportMettingRecord()
        },
        // V1发布
        versionOneClick(_vtype) {
            this.versionFormVisible = true
            this.versionTitle = _vtype + '上报'
            this.getEmail()
        },
        // 编辑
        editRow(row, nums) {
            this.noTaskReason = false
            this.noFeedBackReason = false
            if (nums === '1') {
                this.createDialogTitle = '反馈编辑'
                this.createType = 'edit'
                this.createDialogVisible = true
                if (row.discussionContent === '' || row.discussionContent === null) {
                    this.noFeedBackReason = true
                }

                this.getCreateFromDetail(row.id, this.pannelName, row.productId)
            } else if (nums === '3') {
                this.createDialogTitle = '反馈编辑'
                this.createType = 'edit'
                this.createDialogVisible = true
                if (row.discussionContent === '' || row.discussionContent === null) {
                    this.noFeedBackReason = true
                }
                this.getCreateFromDetail(row.id, this.pannelName, row.productId)
            } else {
                this.taskMissionTitle = '任务编辑'
                this.taskMissionType = 'edit'
                this.taskMissionVisible = true
                if (row.discussionContent === '' || row.discussionContent === null) {
                    this.noTaskReason = true
                }
                this.getTaskFromDetail(row.id, this.pannelName, row.productId)
            }
        },

        saveVersionForm(formName) {
            const recipientUser = this.versionForm.recipientUser
                ? this.versionForm.recipientUser
                : []
            const copyRecipients = this.versionForm.copyRecipients
                ? this.versionForm.copyRecipients
                : []

            this.dynamicTags.forEach((item) => {
                const objs = {
                    userName: '',
                    email: item
                }
                recipientUser.push(objs)
            })
            this.dynamicTags2.forEach((item) => {
                const obj = {
                    userName: '',
                    email: item
                }
                copyRecipients.push(obj)
            })
            let type = ''
            if (this.pannelName === 'V1') {
                type = '0'
            } else {
                type = '1'
            }
            this.versionForm.version = type
            this.versionForm.meetingId = this.$route.query.id

            this.versionForm.recipientUser = recipientUser
            this.versionForm.copyRecipients = copyRecipients
            this.versionForm.autoCreateFeedback = this.searchConditionForm.autoCreateFeedback
            this.versionForm.autoCreateTask = this.searchTaskForm.autoCreateTask
            this.versionForm.feedbackProductIds = this.searchConditionForm.productId
            this.versionForm.taskProductIds = this.searchTaskForm.productId
            this.versionForm.taskNumber = this.searchTaskForm.taskNumber
            this.versionForm.feedbackNumber = this.searchConditionForm.feedbackNumber
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    this.fullscreenLoading = true
                    setTimeout(() => {
                        this.sendEmail(this.versionForm, formName)
                    }, 2000)
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },

        saveRecordsForm(formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    this.recordsForm.feedBackNumber = this.recordsForm.feedBackNumber * 1
                    this.recordsForm.meetingId = this.$route.query.id
                    this.recordsForm.severelyOverdue = this.pannelName !== 'third'
                    this.addMettingRecord(this.recordsForm, 'recordsForm')
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },
        closeDelete() {
            this.deleteDialogVisible = false
        },
        clearForm(formName) {
            this.$refs[formName].resetFields()
            this.startTime = ''
            this.endTime = ''
            this.feedBackDialogVisible = false
            this.versionFormVisible = false
            this.recordsFormVisible = false
            this.recordsForm = {
                productName: '',
                feedBackNumber: '',
                title: ''
            }
            this.dynamicTags = []
            this.dynamicTags2 = []
            this.taskList = []
            this.isEmpty = null
            this.isEmpty2 = null
            this.versionForm = {
                appendixsName: '', // 附件名称
                title: '', // 主题
                content: '',
                copyRecipients: [],
                recipientUser: [],
                receiver: '', // 收件人
                recipients: '', // 抄送人
                discussionContent: '', // 发布内容
                addtion: '' // 附加
            }
            this.couldClick = false
        },
        seriousDelate(row) {
            this.seriousDelateVisible = true
        },

        async getUserList() {
            try {
                const result = await FeedBack.GetAllUserAsync()
                if (result.success) {
                    this.otherPrincipalList = result.data
                    this.allUserList = result.data
                }
            } catch (err) {
                console.log(err)
            }
        },
        async getUserListById(prouctId) {
            try {
                const result = await FeedBack.GetListItemAsync({ id: prouctId })
                if (result.success) {
                    this.productUserList = result.data
                    this.recrodsUserList = result.data
                }
            } catch (err) {
                console.log(err)
            }
        },

        async getProductList() {
            try {
                const result = await FeedBack.ProInsertAsync()
                if (result.success) {
                    this.userProduct = result.data
                }
            } catch (err) {
                console.log(err)
            }
        }
    }
}
</script>
<style scoped lang="less">
.mettingDetail {
  padding: 30px;
  height: 100%;
  min-width: 576px;
  overflow: auto;
  box-sizing: border-box;
  .selectCondition {
    display: flex;
    align-items: center;
    position: relative;
    padding: 20px 30px 0 30px;
    box-sizing: border-box;
    width: 100%;
    height: 60px;
    background: #ffffff;
    box-shadow: 0 2px 5px 0 rgba(152, 160, 179, 0.2);
    border-radius: 5px;
    ::v-deep .el-tabs__header {
      margin: -1px;
    }
    ::v-deep .el-tabs__nav-wrap::after {
      background-color: #fff;
    }
    .aboutOptions {
      position: absolute;
      right: 20px;
      top: 20px;
      display: flex;
      align-items: center;
      justify-content: flex-end;
    }

    ::v-deep .radioGroups .el-radio-button__inner {
      margin-right: 20px;
      border: 1px solid #dcdfe6;
      height: 40px;
    }

    ::v-deep .el-radio-button .el-radio-button__inner {
      border-radius: 4px;
    }

    ::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
      border: 1px solid #409eff !important;
    }
  }
  .tableContainer {
    margin-top: 30px;
    .TopDetailTable {
      padding: 0 20px 20px 30px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
      //   min-height: 370px;
    }
    .BottomDetailTable {
      padding: 0 20px 20px 30px;
      margin-top: 30px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
      //   min-height: 370px;
    }
    .meetingRecordTable {
      //   height: 780px;
      width: 100%;
      padding: 0 20px 20px 30px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
    }
    .row-bg {
      width: 100%;
      align-items: center;
      .titleSpan {
        width: 73px;
        height: 18px;
        font-size: 18px;
        font-weight: 400;
        color: #333333;
        line-height: 64px;
      }

      .aboutOptions {
        height: 70px;
        display: flex;
        align-items: center;
        justify-content: flex-end;
      }
    }
  }
}
.cardLeft {
  position: absolute;
  left: 0;
  top: 0;
}
.cardTitle {
  width: 73px;
  height: 18px;
  font-size: 18px;
  font-weight: 400;
  color: #333333;
}
.selectType {
  margin-right: 10px;
}
::v-deep .el-dialog {
  border-radius: 5px;
}
::v-deep .el-dialog__body {
  overflow-y: auto;
  border-top: 1px solid #cad0d8;
  border-bottom: 1px solid #cad0d8;
}
::v-deep .pushDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .pushDialog .el-dialog__body {
  padding: 10px 30px;
  height: 40px;
  overflow: auto;
}
::v-deep .pushDialog .el-dialog {
  border-radius: 5px;
  height: 205px;
  box-sizing: border-box;
}
::v-deep .pushDialog .el-dialog__footer {
  padding: 0 20px;
}

::v-deep .deleteDialog .el-dialog__header {
  width: 100% !important;
  border-bottom: 1px solid #ed4747;
}
::v-deep .deleteDialog .el-dialog__body {
  padding: 10px 30px;
  height: 40px;
  overflow: auto;
}
::v-deep .deleteDialog .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}
::v-deep .deleteDialog .el-dialog__footer {
  padding: 20px;
}
::v-deep .feedback .el-dialog__header {
  width: 100% !important;
}
::v-deep .feedback .el-dialog__body {
  padding: 10px 30px;
  overflow: auto;
}
::v-deep .feedback .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}
::v-deep .versionForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .versionForm .el-dialog__body {
  padding: 10px 30px;
  overflow: auto;
}
::v-deep .versionForm .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}

::v-deep .regionDialog {
  border-radius: 5px;
}

::v-deep .regionDialog .el-dialog__body {
  height: 600px;
  overflow-y: auto;
  border-top: 1px solid #cad0d8;
  border-bottom: 1px solid #cad0d8;
}
::v-deep .regionDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .recordsForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .recordsForm .el-dialog__body {
  padding: 10px 30px;
  height: 120px;
  overflow: auto;
}
::v-deep .recordsForm .el-dialog {
  border-radius: 5px;
  height: 250px;
  box-sizing: border-box;
}
::v-deep .cellEditDialogForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .cellEditDialogForm .el-dialog__body {
  padding: 10px 30px;
  height: 170px;
  overflow: auto;
}
::v-deep .cellEditDialogForm .el-dialog {
  border-radius: 5px;
  height: 335px;
  box-sizing: border-box;
}

::v-deep .innerVisibleDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .innerVisibleDialog .el-dialog__body {
  padding: 10px 30px;
  height: 335px;
  overflow: auto;
}

::v-deep .el-card__body {
  padding: 0;
}
::v-deep .el-table td,
.el-table th {
  padding: 0;
}
::v-deep .el-table th {
  background-color: #f6f6f6 !important;
}
::v-deep .el-table th {
  font-size: 14px;
  color: #3579e0;
  font-weight: 400;
}
::v-deep .el-table th.gutter {
  display: none;
}
.export_btn {
  margin-left: 10px;
}

.el-tag {
  margin-right: 10px;
  margin-top: 5px;
}
.el-tag + .el-tag {
  margin-right: 10px;
}
.button-new-tag {
  margin-right: 10px;
  margin-top: 5px;
  height: 32px;
  width: 180px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
}
.input-new-tag {
  width: 180px;
  margin-right: 10px;
  // vertical-align: top;
  margin-top: 5px;
}
.tagsInput {
  display: block;
  resize: vertical;
  padding: 5px 15px;
  line-height: 1.5;
  box-sizing: border-box;
  width: 100%;
  font-size: inherit;
  color: #606266;
  background-color: #fff;
  background-image: none;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
}
::v-deep .ql-editor {
  height: 150px;
  overflow: auto;
}
.errors {
  border-color: #f56c6c;
}
.noneDisplay {
  display: none;
}
::v-deep .special > .el-form-item__label:before {
  content: '*';
  color: #f56c6c;
  margin-right: 4px;
}
.el-table-add-row {
  margin-top: 10px;
  width: 100%;
  height: 34px;
  border: 1px dashed #c1c1cd;
  border-radius: 3px;
  cursor: pointer;
  justify-content: center;
  display: flex;
  line-height: 34px;
}

.emailContent {
  padding: 5px 15px;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  max-height: 250px;
  overflow-y: scroll;
}
::v-deep .emailContent::-webkit-scrollbar-thumb {
  background: #ddd;
  border-radius: 6px;
}
::v-deep .emailContent::-webkit-scrollbar-track {
  /*滚动条里面轨道*/
  background: transparent;
  border-radius: 5px;
}
::v-deep .emailContent::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
  height: 13px;
  border-radius: 5px;
}

::v-deep .recordsUl::-webkit-scrollbar-thumb {
  background: #ddd;
  border-radius: 6px;
}
::v-deep .recordsUl::-webkit-scrollbar-track {
  /*滚动条里面轨道*/
  background: transparent;
  border-radius: 5px;
}
::v-deep .recordsUl::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
  height: 13px;
  border-radius: 5px;
}

.recordsUl {
  max-height: 150px;
  min-height: 50px;
  margin: 10px 0;
  text-align: left;
  overflow-y: scroll;
  //   border: 1px solid #dcdfe6;
  //   background-color: #f5f7fa;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  li {
    list-style: none;
  }
}
.checkGroup {
  height: 500px;
  overflow: auto;
}
.checkGroup2 {
  height: 350px;
  overflow: auto;
}
.checkItem {
  display: block;
}
.log_detail {
  width: 100%;
  box-sizing: border-box;
}
.log_detail .log_detail_header .serialNum {
  display: inline-block;
  width: 18px;
  height: 18px;
  background: cornflowerblue;
  color: white;
  border-radius: 50%;
  line-height: 18px;
  text-align: center;
  margin-right: 5px;
  margin-top: 8px;
}

ul > li {
  list-style: none;
}

.filesHv {
  color: #606266;
  display: block;
  margin-right: 40px;
  overflow: hidden;
  padding-left: 4px;
  text-overflow: ellipsis;
  transition: color 0.3s;
  white-space: nowrap;
  text-decoration: none;
}
.filesHv:hover {
  text-decoration: none;
  color: #409eff;
  cursor: pointer;
}
.reserve_row {
  display: flex;
  justify-content: flex-end;
}
.target-label {
  font-size: 14px;
  padding: 0 12px;
  margin: 2px 0;
  height: 35px;
  line-height: 35px;
}

.target-label i {
  margin-left: 3px;
}
::v-deep .tox .tox-editor-header {
  z-index: 0;
}
.tox .tox-editor-header {
  z-index: 0;
}
.flexEnd {
  margin-bottom: 10px;
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
::v-deep .ql-editor {
  min-height: 200px !important;
}
.el-table .warning-row {
  background: #909399;
}

.el-table .info-row {
  background: #fff;
}
.currentWeekClass {
  cursor: pointer;
  min-height: 60px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}
.tabsName {
  margin: 10px 0;
}
.link-type {
  color: #5495f7;
  text-decoration: underline;
  font-weight: bold;
  font-size: 1.5em;
  cursor: pointer;
}
.link-type,
.link-type:focus {
  color: rgb(32, 160, 255);
  cursor: pointer;
  text-decoration: underline;
  &:hover {
    color: #337ab7;
  }
}
.option_export,
.option_look,
.option_edit,
.option_delete,
.option_suspend,
.option_confirm,
.option_reback,
.option_close,
.option_update,
.option_life,
.option_task,
.option_more {
  display: inline-block;
  width: 16px;
  height: 16px;
  margin: 0 5px;
  position: relative;
  cursor: pointer;
  top: 5px;
}

.option_export {
  background: url('~@/assets/image/options/Ican_4_Selected@2x.png');

  background-size: contain;
}
.option_update {
  background: url('~@/assets/image/options/Ican_9_Selected@2x.png');
  background-size: contain;
}
.option_delete {
  background: url('~@/assets/image/options/Ican_1_Selected@2x.png');

  background-size: contain;
}
.option_task {
  background: url('~@/assets/image/options/option_task.png');
  background-size: contain;
}
.option_confirm {
  background: url('~@/assets/image/options/circleType8.png');
  background-size: contain;
}
.option_close {
  background: url('~@/assets/image/options/Ican_12_Selected@2x.png');
  background-size: contain;
}
.option_reback {
  background: url('~@/assets/image/options/Ican_3_Selected@2x.png');
  background-size: contain;
}

.info-row {
  background: #f0f9eb !important;
}
</style>
<style>
.el-table .info-row {
  background: #c5c9d5;
}
.mettingFormClass {
  margin-top: 15px;
}

.el-table__fixed,
.el-table__fixed-right {
  height: 100% !important;
}
.cell > .el-form-item {
  margin-bottom: 0;
}
.regionDialog td > .cell > .el-form-item {
  margin-bottom: 0;
}
.el-table__body .el-table__row.hover-row td{
  background-color: #c2dbe9 !important;
}
</style>

<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
